您好我有以下脚本设置,并希望在运行最终命令中传递的脚本后杀死屏幕会话。
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脚本在后台运行?所以用户没有看到任何输出。
有没有办法期望下一行而不是"> "
,因为这可能与其他人不同。
再次感谢