Shell脚本:人机交互脚本-scp


前面两篇博文中,为大家演示了shell脚本中sussh命令的免验证输入实现:

http://blog.csdn.net/hanlizhong85/article/details/74089997

http://blog.csdn.net/hanlizhong85/article/details/71055940

本文将进一步演示,通过expect工具实现scp命令免密输入的方法。

 

Expect开源软件安装,请参考:

http://blog.csdn.net/hanlizhong85/article/details/71038532

 

scp.sh脚本实现

脚本实现功能:实现远程主机与本地主机之间的文件拷贝,脚本有6个入参:

1个参数:标识远端用户名;

2个参数:标识远端用户名对应的密码;

3个参数:远端主机IP地址;

4个参数:源文件或目录;

5个参数:目的文件或目录;

6个参数:拷贝类型,0标识从远端拷贝数据到本地,为其他值标识从本地拷贝数据到远端。

############################################################

#!/bin/bash

#Createby hanlizhong on 2013.08.10

 

#The first three parameters represent remote host info.

USERNAME=$1

PASSWD=$2

HOSTIP=$3

SRC_FILE=$4

DST_FILE=$5

#TYPE:0--copy remote data to local; other--copy local data to remote

TYPE=$6

 

if [ -z${USERNAME} ] || [ -z ${PASSWD} ] || [ -z ${HOSTIP} ] ||\

 [ -z ${SRC_FILE} ] || [ -z ${DST_FILE} ] || [-z ${TYPE} ]; then

         echo "Input error!"

         exit 1

fi

 

if [${TYPE} == 0 ]; then

         #Here, ${SRC_FILE}must be absolute path.

         CMD_PARA="${USERNAME}@${HOSTIP}:${SRC_FILE}${DST_FILE}"

else

         #Here, ${DST_FILE}must be absolute path.

         CMD_PARA="${SRC_FILE}${USERNAME}@${HOSTIP}:${DST_FILE}"

fi

 

expect -c"

         spawn scp -r ${CMD_PARA}

         expect {

                   "*\(yes/no\)?" {send "yes\\r"; exp_continue }

                   "*password:" { send"${PASSWD}\\r" }

         }

         expect eof

"

############################################################

执行结果:

[root@HLZhanlzh]# ./scp.sh root root "192.168.242.128""/home/hanlzh/log.txt" "/home" 0

spawn scp-r root@192.168.242.128:/home/hanlzh/log.txt /home

root@192.168.242.128'spassword:

log.txt                                                                                                                               100%    0    0.0KB/s   00:00   

[root@HLZhanlzh]#

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值