shell本地脚本调用远程脚本,当远程脚本执行完再继续执行本地脚本

2025-05-20 19:15:09
推荐回答(3个)
回答(1):

#!/bin/bash

#调用expect脚本执行远程sh
expect -c '
set timeout 10000
spawn ssh usr@ip
expect {
        "yes/no"  {send "yes\r"; exp_continue}
        "*assword"  {send "passwd\r"}
    }
expect "#"
send "sh 1\r"
expect "#"
'
echo
ls -l

其中timeout时间需要设置足够长,不然会连接超时断掉。

或者你配置了rsh,可以把上面的expect过程替换成rsh [Host] [-l UserName] [-n] [Command]

回答(2):

只要你远程的脚本1里面没有通过 nohup 调用,这个脚本本身就会要求 1执行完成后才能执行 ls -l指令,无需sleep
你可以这样测试
ssh user@IP "sleep 2;echo 1"
echo 2
你可以看到显示结果一定是
1
2
怎么样,给分吧

回答(3):

兄弟,如果不是你学校的问题的话, 我可以为你解决。wo jiu shi Linux da神。 你yong baidu 私信我吧,然后zai lian xi wo