簡體   English   中英

如何在bash_profile中編寫函數

[英]how to write a function in bash_profile

我們如何才能編寫一個簡單的常規函數​​,將其放入bashprofile中,該函數可用於將控制台保護到我想要的任何主機。

但我的安全控制台必須通過跳轉主機。 這就是問題。

function func_name () {
 ssh jumphostname; 
 sc $hostname # from jump host secure console to another host given as input from terminal
}

此功能僅能登錄以跳轉主機,而不能從該主機安全地登錄到另一個主機。

-bash-4.1 $ func_name host.me.com應該給我控制台通過jumphost到host.me.com

這是不可能的功能嗎? 我必須編寫腳本嗎?

除非使用$( )模擬命令周圍的變量,否則不應在測試[ ]使用命令。 仍然不確定SSH是否會返回測試。 SSH需要TTY你像連接到,而不是TTY你在。 這會引起問題!

沒有SSH的示例...

suleiman@antec:~$ if [ "$(cat ~/test.txt)" ]; then echo "Hello World"; else echo "failed"; fi
Hello World
suleiman@antec:~$ if [ "$(cat /this/file/dont/exsist 2>/dev/null)" ]; then echo "Hello World"; else echo "failed"; fi
failed

加成:

-bash:sc:找不到命令

這意味着您spreadsheet在主機上安裝spreadsheet

此功能僅用於登錄以跳轉主機,而不能用於從該主機安全登錄到另一主機。

您想做什么?

您知道SSH是什么嗎? 它打開遠程TTYs ,或者換句話說: 打開遠程安全控制台

您不能運行腳本並在其中放置ssh登錄名,然后認為此后的所有代碼都將在新控制台中,但不會發生。

您可以在控制台上運行ssh ,以便獲得自己的TTY並在其中輸入一些命令。 或者您將ssh與腳本中的某些命令結合使用,例如

ssh user@host echo "Hello World!"

您也可以通過ssh通過一些變量或文本

echo "Hello World!" | ssh user@host cat

您可以使用它做更多的事情,而且不應該這樣做!

以下鏈接將幫助您繼續前進

ssh username@host_address "command to execute"

例如輸出:

arul@OA2:~/work/images$ ssh arul@localhost echo "hai"
arul@localhost's password: 
hai
arul@OA2:~/work/images$

ssh arul @ localhost命令將登錄,並在當前登錄的提示符中顯示“ echo hai”命令”

引用: https : //www.cyberciti.biz/faq/unix-linux-execute-command-using-ssh/

我會寫這個

con.sole() {
    if ! ssh -T jumphostname true; then
        printf 'Jump host "%s" not available.\n' jumphostname >&2
        return 1
    fi
    sc "$@"
}

方括號不是if語句語法的一部分。 這是一個單獨的命令,與test相同。

這是我的方法。

  1. 在家創建一個功能文件夾
  2. 將我的函數編寫為Shell腳本
  3. 在我的bash_profile中將文件作為別名引用
  4. 重設來源

mkdir ~/.functions
echo '#!/bin/bash
      echo $1' > ~/.functions/ekho
echo 'alias ekho="sh ~/.functions/ekho"' >> ~/.bash_profile
source ~/.bash_profile

現在,您可以永遠從任何位置調用方法。

ekho "Wow"

這是因為您沒有在if和[...之間留下空格。

function con.sole
{
    if [ ssh jumphostname ]; then
        sc $1;
    else 
        echo "host not available"
    fi 
}

來自墨西哥的問候! 🇲🇽

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM