萧潇墨 2018-08-09 07:06 采纳率: 75%
浏览 5547
已采纳

shell脚本判断scp是否传输完成

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是否传输完成?

  • 写回答

3条回答

  • qq_36588980 2018-08-09 07:30
    关注

    不要在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不存在,创建。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料