向其发送命令后杀死屏幕会话

时间:2017-05-10 11:51:04

标签: linux bash session scripting expect

您好我有以下脚本设置,并希望在运行最终命令中传递的脚本后杀死屏幕会话。

testCommand="$testCommand; exec bash"
read -sp $user'@example.com password: ' password
screen  -d -m -S dart bash -c "ssh example.com";
sleep 1
screen -S dart -p0 -X stuff "$password
"
sleep 1
screen -S dart -p0 -X stuff "cd $localListDir
"
sleep 1
screen -S dart -p0 -X stuff "$testCommand
"

注意我无法为ssh连接设置ssh密钥,因此发送这样的密码是唯一的选择。

最后一个"screen -S dart -p0 -X stuff "$testCommand"在ssh连接上运行脚本。这个脚本可以运行minuets或几个小时。在此脚本运行完毕后,我希望屏幕会话结束,这样脚本的用户就不需要自己杀死它了。

我认为它与testCommand结尾处的"; exec bash"有关但如果没有这个,脚本会在漫长的等待中挂起,直到你连接到屏幕。

由于

修改

感谢您的快速回复。

所以在看了一下后,我已将以下内容添加到我的脚本

/usr/bin/expect << EOF
spawn ssh example.com
expect "password: "
send "$password\r"
expect "> "
send "cd $localListDir\r"
expect "> "
send "$testCommand\r"
expect "> "
EOF

有没有办法让testCommand脚本在后台运行?所以用户没有看到任何输出。 有没有办法期望下一行而不是"> ",因为这可能与其他人不同。 再次感谢

0 个答案:

没有答案