我正在尝试创建一个运行一些命令的脚本,这些命令需要很长时间才能执行并且需要持续连接,但是
autossh user@server
wait $! #or wait ${!}
commandA
commandB
不起作用(我假设因为autossh掉入后台). GUI弹出询问密码,当启动时,将运行下几个命令.
在运行下一个命令之前,如何等待已建立的连接?
更新:
autossh -f => “…导致autossh在运行ssh之前掉到后台……”
所以-f等待什么都不做,没有它,你等待永远不会结束的ssh ……
解决方法:
如果我理解正确您的问题是您希望等到身份验证成功后再继续执行其余的脚本.
我会用public key authentication and ssh-agent解决这个问题.
配置完成并且ssh-agent正在运行后,ssh将不会要求输入密码,并且您的脚本每次都会正确验证. (这与确保连接正常工作并不完全相同,但它可能足以满足您的需要)
另外还有两种解决方法:
>在while循环中使用tcptraceroute检查端口转发是否正常工作(假设您正在使用端口转发或可以为此目的创建一个端口转发).在得到成功答复之前,不要突破循环.
>将长时间运行的命令放在远程端的脚本中,然后在屏幕或nohup中执行.我过去使用的一个技巧是生成一个脚本,然后将其复制到远程端,然后使用nohup执行它.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。