我通過shell腳本(通過在腳本中放置ssh命令)登錄到遠程機器。 執行ssh命令後,腳本的其餘行將在當前機器上執行,而不是在遠程機器上執行。如何讓其餘的shell腳本行在遠程機器上執行?在遠程機器上執行shell腳本的一部分
比方說這是我的腳本
ssh [email protected]
ls
whoami
----
線的SSH之後的其餘部分應當遠程機器上執行,而不是當前的機器。如何實現這一目標?
我通過shell腳本(通過在腳本中放置ssh命令)登錄到遠程機器。 執行ssh命令後,腳本的其餘行將在當前機器上執行,而不是在遠程機器上執行。如何讓其餘的shell腳本行在遠程機器上執行?在遠程機器上執行shell腳本的一部分
比方說這是我的腳本
ssh [email protected]
ls
whoami
----
線的SSH之後的其餘部分應當遠程機器上執行,而不是當前的機器。如何實現這一目標?
使用ssh
命令與-t
選項。例如:
ssh -t myremotehost 'uptime'
[email protected]'s password:
10:14:14 up 91 days, 21:20, 5 users, load average: 0.20, 0.35, 0.36
一種可能的解決方案將是在下面的示例中使用heredoc
爲:
$ ssh example.foo.com -- <<@@
> ls /etc/
> cat /etc/passwd
> @@
在第一行中的@@和最後線之間基本上所有將被執行上遠程機器。
$ MYVAR=`cat ~/foo.txt`
$ ssh example.foo.com -- <<@@
> $MYVAR
> @@
或者簡單地執行定界符內同一個動作:
$ ssh example.foo.com -- <<@@
> `cat ~/foo.txt`
> @@
你也可以通過讀取文件的內容到一個變量使用一個文件的內容你的登錄是無密碼的嗎?
如果是的話,你可以使用管道到遠程機器
就像執行語句:
cat myshellscript.sh | ssh [email protected] -q
SSH -t用戶@遠程主機 '正常運行時間' 用戶@遠程主機的密碼: 23 :35:33最多2:05,3位用戶,平均負載:0.79,0.52,0.60 連接到遠程關閉。
當您指定-t時,它將打開遠程計算機上的終端並執行該命令。
可能的重複[如何從一個bash腳本內ssh?](http://stackoverflow.com/questions/1895185/how-to-ssh-from-within-a-bash-script) –