用expect实现自动输入SSH的SCP信息,且不需要另外的文件

#!/bin/sh

if [ $# != 2 ] ; then
echo "USAGE: $0 remote_ip serverXXXXX"
echo " e.g.: $0 1.2.3.4 serverxxxx"
exit 1;
fi  

host_ip=$1
server_port=$2
user_name="user_name"
password="password"
server_path="/xx/xxx"
src_path="${server_path}/${server_port}"

###fork expect send password and exec scp command

expect << EOF
set timeout 30
spawn scp -r $src_path [email protected]$host_ip:$server_path
expect "password:"
send "${password}\r"
expect eof
EOF

这样显得精简一些,专业一点。。

来深圳学习环境三周啦,这周应该差不多可以回上海啦~~

时间: 2024-08-13 08:28:27

用expect实现自动输入SSH的SCP信息,且不需要另外的文件的相关文章

expect 批量自动部署ssh 免密登陆 之 二

#!/usr/bin/expect -f ########################################## hutu #Push the id.pas.pub public key to the target server through the SSH service to implement secret-free login. #Define an iplist Create an iplist file in the current directory. The co

Centos ssh和scp利用expect自动填充密码

在命令行ssh远程登录服务器和scp远程传输文件都需要交互式输入密码,无法像MySQL登录数据库 mysql -uroot -p123456一样直接完成. 介绍在centos环境下,脚本依赖expect来达到这一目的,首先确认安装 expect 密码有特殊字符如$需要转义 ssh登录脚本,ip在执行脚本时动态输入: #!/usr/bin/expectset timeout 30set ip [lindex $argv 0 ]spawn ssh -l root $ipexpect "passwor

expect实现自动scp和ssh登录后执行命令,并向bash提供返回值

#!/bin/bash # 全局变量:用户名,普通用户密码,root密码 loginname="icgsu" userpwd="netentsec" rootpwd="netentsec" # 读取iplist cat /root/iplist | while read line do ip=($line) # scp脚本及ssh登录执行 /usr/bin/expect<<EOF set timeout 10 spawn scp /r

ssh、scp免秘钥远程执行命令:expect

首先安装expect # yum -y install expect 命令格式 # ./expect IP COMM    #expect是独立的工具,所以不能用sh来执行 #!/usr/bin/expect set timeout -1    #超时时间默认10秒,如果你要执行一条很漫长的命令,那么这个很有必要,这里将超时时间设置为永不超时 set COMMADN1 [lindex $argv 0]    #传参变量,这里引用脚本后面的第一个参数 set COMMADN2 [lindex $a

通过expect的自动交互实现ssh公钥批量下发

1.auto_except_ssued_publickey.sh #!/usr/bin/expect (这里要注意执行环境为:#!/usr/bin/expect ) #注意,如果没有expect,请先安装,yum -y install expect 或apt-get -y install expect set timeout 10   set username [lindex $argv 0] #传入第一个参数,用户名 set password [lindex $argv 1] #传入第二个参数

linux实现自动远程备份(scp+ssh)

刚上线的服务器需要备份日志,要备份到另一台服务器上去,为了减少工作量,采用linux的定时任务去自动执行.因服务器都是linux的,因此采用linux的远程复制scp命令.但这里涉及到一个问题,就是scp命令执行时需要输入密码,在网上大概搜集了下有两种方法:①一种是采用except方法(会存储明文密码):②采用ssh生成密钥的方式.这里我采用第二种方式. 备份方式:拷贝前一天的日志文件到备份服务器,再压缩后删除复制的本地文件.日志文件每天都会产生,格式都为access_20151214类似的文件

ssh采用expect实现自动输入密码登录、拷贝

1. 引言 最近做了一个项目,需要频繁与另一台主机进行文件的传输:中间想到了很多方式:FTP.samba.curl等,但是还是感觉scp最好用. SCP使用教程可参阅:http://www.jb51.net/article/70919.htm 但scp也存在着一些问题,每次都需要输入目标机的密码,需人为手动干预,这个就比较烦了,那么有没有可以自动进行界面交互的命令呢? 答案当然是:有: expect喽 except使用教程:https://www.cnblogs.com/lixigang/art

expect 实现自动交互脚本

1. 说明 在编写脚本时,可能会遇到需要在另一台主机上执行一个命令,或者在本机拷贝另一台主机内的一个文件.如果两台主机之间没有做互信,就会牵扯到用户输入密码的交互过程,这对编写自动脚本来说, 就行不通了. 要实现在脚本内的自动交互,就需要 expect 2.  expect 命令介绍 expect 是一个用来处理交互的命令.借助 expect 可以将交互过程写在一个脚本里,就可以实现自动化完成.上面的问题也能得到解决. 形象来说,如下命令的交互都能得到解决: ssh scp ftp CentOS

linux中使用expect实现自动登录

在实际生产使用中,比如执行批量操作时,我们不想创建ssh认证,需要使用到密码登录或者链接,此时可以使用expect来操作自动添加password: 在centos系统上expect默认是没有安装的,所以首先应先安装expect: yum install expect -y 创建expect脚本: [[email protected] script]# cat ssh_203.exp #!/usr/bin/env expect set timeout 5 set remote_ip "192.16