shell 脚本如下 这个scp脚本是成功的 然后我现在想要在scp执行完以后执行自动启动jar包
#!/bin/expect
set timeout 300
spawn scp -r /root/.jenkins/workspace/adfinal/store/target/store-0.0.1-SNAPSHOT.jar root@120.78.204.195:/root/test
expect {
-re "password:" {send "Wztisroot\r"}
}
interact
这是第二次修改的脚本
#!/bin/expect
set timeout 300
spawn scp -r /root/.jenkins/workspace/adfinal/store/target/store-0.0.1-SNAPSHOT.jar root@120.78.204.195:/root/test
expect {
-re "password:" {send "Wztisroot@2018\r"}
}
spawn ssh root@120.78.204.195 -t "cd /root/test;java -jar /root/test/store-0.0.1-SNAPSHOT.jar;bash --login"
expect {
"(yes/no)?"
{send "yes\n";exp_continue}
"password:"
{send "Wztisroot@2018\n"}
}
interact
但是执行以后发现还没有等传输完成它就已经知道启动这一步了,请问这个要怎么判断scp是否传输完成?
不要在shell脚本中对密码进行硬编码,而要使用SSH密钥,它更加简单和安全。
$ scp -i ~/.ssh/id_rsa devops@myserver.org:/path/to/bin/*.derp .
假设你的私钥在 ~/.ssh/id_rsa
要生成公钥/私钥对:
$ ssh-keygen -t rsa
以上将生成2个文件,~/.ssh/id_rsa(私钥)和~/.ssh/id_rsa.pub(公钥)
要设置使用的SSH密钥(一次性任务):复制~/.ssh/id_rsa.pub并粘贴~devops/.ssh/authorized_keys到myserver.org服务器的新行中的内容。如果~devops/.ssh/authorized_keys不存在,创建。
可以试试 ps -ef查进程;
或者对比两边文件大小
你好 你最后解决了吗 我也遇到这个问题了