qq_39511609
萧潇墨
采纳率60.6%
2018-08-09 07:06 阅读 4.6k
已采纳

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

5

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • 已采纳
    qq_36588980 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不存在,创建。

    点赞 评论 复制链接分享
  • qq_34589694 缘起缘灭4 2018-08-09 07:28

    可以试试 ps -ef查进程;
    或者对比两边文件大小

    点赞 评论 复制链接分享

相关推荐