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

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条)

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵