[英]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
相同。
這是我的方法。
例
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.