Bash

如何在此處文件中使用退出

  • September 14, 2017

當我在 HEREDOC 中使用多個 ssh 連接時,我有一個腳本,如下所示:

ssh -A -tt -l user 192.168.1.2 <<EOF
 ping server1 -c3
 ssh server2
 nslookup www.gogole.com
 exit
 ssh server3
 ifconfig
 exit
EOF

但是,當我在 EOF 中使用 exit 時,它會停止處理腳本而不是退出 SSH 會話,有什麼想法/技巧可以退出 ssh 會話而不是整個腳本嗎?

#'~.'  - terminate session - doesn't work unfortunately

如果你想堅持這裡的文件

ssh -A -tt -l user 192.168.1.2 <<EOF
 ping server1 -c3
 ssh server2 <<foobar1
 nslookup www.gogole.com
 more commands
 exit
foobar1
 ssh server3 <<foobar2
 ifconfig
 more more commands
 exit
foobar2
EOF
  • 您可以使用任何詞來關閉此處的文件。
  • 分隔符必須開始一行。
  • 或使用<<-word
ssh -A -tt -l user 192.168.1.2 <<EOF
 ping server1 -c3
 ssh server2 nslookup www.gogole.com
 ssh server3 ifconfig
EOF

ssh命令將在執行完給定命令後退出。

對於多個命令,請使用sh -c

ssh -A -tt -l user 192.168.1.2 <<EOF
 ping server1 -c3
 ssh server2 sh -c 'nslookup www.gogole.com; echo done'
 ssh server3 sh -c 'ifconfig; df -k'
EOF

server2如果您在和上有很多基本的事情要做,請server3在這些伺服器上創建腳本並執行它們。

引用自:https://unix.stackexchange.com/questions/392180