如何从由bash脚本创建的ssh会话中退出?

6

我有以下bash脚本test.sh

#!/bin/bash
ssh -o "StrictHostKeyChecking no" user@$1
#do some stuff
exit

如果我运行这个脚本 ./test.sh ,需要输入ctrl+d才能退出ssh会话,而且看起来exit命令并没有按照我的意愿工作。

是否有任何方法可以退出从该bash脚本创建的ssh会话?

1个回答

16

你可能想编写一个Here文档

#!/bin/bash
ssh -o "StrictHostKeyChecking no" user@$1 << ENDHERE
   here do some remote stuff
   also here
   exit
ENDHERE
如果您在代码中使用 <<-ENDHERE ,则会取消 Here Document 中每行的初始空格或制表符。除非您编写 <<\ENDHERE,否则参数(像$foo)将被替换,而 ENDHERE 实际上可以是任何单词,通常是大写字母。请阅读Advanced Bash Scripting guide(其中确实存在一些缺陷)。

1
如果您不需要 tty,也可以使用 ssh -T。 - Paul
1
如果您希望在SSH会话中断时退出Shell脚本,请在“ssh”之前添加“exec”。 - Edouard Thiel
HERE实现存在一些问题。首先,您无法通过HERE文档进行sudo操作。有关更多信息,请参见http://thornelabs.net/2013/08/21/simple-ways-to-send-multiple-line-commands-over-ssh.html的末尾部分。 - andor kesselman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接