Shell-Scp自动输入密码

在LINUX上,我们可以很方便的使用scp命令来远程拷贝文件,但是由于scp命令本身无保存密码选项,所以在shell里面无法像samba那样子保存密码,比较麻烦,下面介绍下两种实现方法。

方法一:

ssh公私钥认证

方法二:

expect(expect - programmed dialogue with interactive programs, Version 5)实现

默认安装,需要手动安装expect包:yum -y install  expect  expect-devel

#!/bin/bash
expect -c "
set timeout 1200; ##设置拷贝的时间,根据目录大小决定,我这里是1200秒。
spawn /usr/bin/scp -r 192.168.0.201:/work/backup/db_back/ /work/dbback/
expect {
\"*yes/no*\" {send \"yes\r\"; exp_continue}
\"*password*\" {send \"123456\r\";} ##远程IP的密码。
}
expect eof;"

如果不设置timeout的话会自动退出,所以必须设置,或者用default字段可以设置expect超时或退出时的动作。

时间: 2024-09-27 13:14:59

Shell-Scp自动输入密码的相关文章

Linux中shell脚本自动输入密码

最近遇到蛋疼的事,就是在shell脚本中需要获取root权限,因此在shell脚本运行过程中需要输入密码. 懒惰的我当然想让shell在执行过程中就可以自动输入密码,这样就可以抽空看看妹子图.. 我通过查询资料了解到,可以通过“ 重定向操作符 ” 将标准输入内容作为内容自动输入.但是这样需要用 -i 参数结束交互式输入 例如: sudo -i nginx < pwd 然后另建一个文件:pwd.内容为密码:1234.

shell中scp自动输入密码

``` #!/bin/bash des_pass=testtest expect -c " spawn scp target/aaa-0.0.1.war [email protected]:/home/GameUser/MagicvesselUserWeb/aaa-release.war expect \"password:\" send \"${des_pass}\r\" expect eof "

shell scp免输入密码传输

#!/usr/bin/expect -f set dtime [lindex $argv 0 ]  set password 111111 set timeout 3000; spawn /usr/bin/scp /software/databk/$dtime.sql [email protected]:/software/mysqldata/ #spawn ssh [email protected] expect  { "*yes/no" {send "yes\r"

shell脚本中自动输入密码

最近刚学会的scp自动输入密码. #!/bin/bash set -x TIME=`date +%Y%m%d%H%M%S` SOURCE='/home/cqq/project' PASSWD='123' tar zcvf  ${TIME}.tar.gz  $SOURCE >>/dev/null  2>&1 expect -c " spawn scp -r  [email protected]:/home/cqq/project/src/  /home/test/ exp

Shell脚本交互之:自动输入密码

Shell脚本交互之:自动输入密码 2016年04月09日 19:41:26 zhangjikuan 阅读数:58208 标签: Shell交互自动输入密码expect重定向管道 更多 个人分类: ARM/linux 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/zhangjikuan/article/details/51105166 平时在控制台输入指令如:sudo.ssh.ftp或者修改admin权限的文件时候都会要求输入password,

Shell结合Expect实现自动输入密码

Shell结合Expect自动输入密码示例 1 #!/bin/bash 2 3 cd /data/live 4 5 /usr/bin/expect <<-EOF 6 spawn git clone "ssh://xxxxxxxxxxxx" 7 expect "*passphrase*" 8 send "passwordhere\n" 9 expect eof 10 EOF 11 12 time=`/bin/date "+%Y

【转】Shell脚本交互之:自动输入密码

平时在控制台输入指令如:sudo.ssh.ftp或者修改admin权限的文件时候都会要求输入password,但是在she'll脚本运行过程中该如何交互实现自动输入密码呢? 下面总结三种实现方法: 一.重定向:用重定向方法实现交互的前提是指令需要有参数来指定密码输入方式,如ftp就有-i参数来指定使用标准输入来输入密码 shell用重定向作为标准输入的用法是:cmd<<delimiter ,shell 会将分界符delimiter之后直到下一个同样的分界符之前的内容作为输入 实现ftp自动登录

scp自动备份

一台FTP服务器, 查看文件是否占用过多空间. 然后就scp到指定服务器. 删除过期文件 已提前使用 ssh-keygen -t rsa  ssh-copy-id -i [email protected] 添加相关信任 本来想用 pexpect 模块自动输入密码. 然后发现这个在复制大文件似乎有问题. 查了一下说更改下面的文件 vi /usr/lib/python2.7/dist-packages/pxssh.py # 说在这个地方再添加  self.sendline() time.sleep(

linux脚本实现自动输入密码

使用Linux的程序员对输入密码这个举动一定不陌生,在Linux下对用户有严格的权限限制,干很多事情越过了权限就得输入密码,比如使用超级用户执行命令,又比如ftp.ssh连接远程主机等等,如下图 那么问题来了,在脚本自动化执行的时候需要输入密码怎么办?比如你的脚本里有一条scp语句,总不能在脚本执行到这一句时手动输入密码吧 针对于ssh或scp命令,可能有人会回答是建立信任关系,关于建立ssh信任关系的方法请自行百度Google,只需要两行简单的命令即可搞定,但这并不是常规的解决方案,如果是ft

Shell脚本-----自动备份Mysql数据库

脚本的整体思路 1.定义需要的变量 2.利用for循环备份需要备份的库,并以库名-当天日期.sql命名,并记录相关日志 3.建立备份当天的日期的目录,向备份的Sql文件移动到该目录 4.压缩打包该目录,以节省空间,打包成功后删除该目录 5.备份目录只备份七天的数据库,第八天删除第一天的备份,目录只会存在连续七天的备份文件 6.查找备份目录下的.log日志文件,超过七天的删除 #!/bin/bash mysql_bin=/usr/local/tdoa/mysql/bin/mysqldump use