用shell脚本实现scp远程复制,避免每次都要输入远程机器密码

  • Post author:
  • Post category:其他


最近由于需要不定时的在两台机器之间传送同样的文件,每次都要用scp命令,每次执行都要输入服务器密码,实在是不厌其烦。本着能用脚本自动处理的问题绝不手动处理的原则,还是得想办法用脚本解决。

这个问题并不复杂,解决问题的关键点就是:模拟执行scp命令后手动输入密码的环节。将服务器密码写进shell脚本,让其自动填写。经过查资料发现一个神奇的命令:expect,可以解决自己的需求,expect命令是一个用于实现自动交互功能的软件。使用expect,就可以根据程序的提示,模拟标准输入(即键盘输入)提供给程序,从而实现自动化交互。

更多关于expect的使用,参照:

Linux expect详解

使用之前首先要保证自己的机器上安装了expect命令,可以用yum install expect进行安装。最终的实现scp自动化的shell脚本如下:

#!/bin/sh

expect -c "
  spawn scp -r root@10.110.16.139:/opt/server/Gresource/resource-console-1.1.0-SNAPSHOT.jar .
  expect {
    \"*password*\" {set timeout 300; send \"!QAZ2wsx\r\";}
  }
expect eof"



版权声明:本文为nankeyimengxihe原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。