shell脚本无密码登录 expect的使用方法详解

今天需要做一个定时任务脚本将最新的数据包文件传到远程的服务器上,虽然有密钥但也是要求输入密码的那种,所以只能另想办法实现让脚本自动输入密码了。

从网上查到使用expect可以,简单研究了一下,效果不错。

因为我的操作系统没有安装expect,所以直接"yum -y install expect",你可以根据你的操作系统安装expect,或者源码编译。

安装好之后就可以使用了,这里有几种方法:

一、单独写一个脚本

如 auto_scp.sh:

#!/usr/bin/expect

#使用第一个参数

set server_ip [lindex $argv 0]

#后面的也可以用参数[lindex $argv n]

set server_port 22

set server_dir /home/test

set server_user test

set server_pswd test

set scp_file auto_scp.sh

# 设置超时时间

set timeout 60

spawn scp -P $server_port $scp_file $server_user@$server_ip:$server_dir

expect {

"passphrase"

{

send "$server_pswd\n";

}

"password"

{

send "$server_pswd\n";

}

"yes/no"

{

send "yes\n";

exp_continue;

}

}

expect eof

我这里的变量都是随意设置的,你可以根据你的情况进行选择,保存退出之后,对该文件加上可执行权限,运行

"./auto_scp.sh 2.2.2.2"就可以了,"2.2.2.2"就是传入的第一参数。

"passphrase"和"password"等就是要监测的输入提示的一部分,send "$server_pswd\n"就是要执行的命令。

二、在脚本中使用----我比较喜欢这个

我这里使用的是Here document方法。

......

......

expect <

set timeout 60

spawn scp -P $server_port $scp_file $server_user@$server_ip:$server_dir

expect {

"passphrase"

{

send "$server_pswd\n";

}

"password"

{

send "$server_pswd\n";

}

"yes/no"

{

send "yes\n";

exp_continue;

}

}

expect eof

!!

......

变量都是我从配置文件中获取的,这里不再赘述了。

三、在脚本中使用

也是在脚本使用,但是不是用的Here document方法,而是使用expect -c 参数书,"-c"选项后面的字符串填充的就是命令。但是要注意本身字符串的转义符。

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

linux expect 输入密码,shell脚本无密码登录 expect的使用方法详解相关推荐

  1. Linux Shell脚本入门--wget 命令用法详解

    Linux Shell脚本入门--wget 命令用法详解 wget是在Linux下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括Windows在内的各个平台上.它有以下功能 ...

  2. 【Linux】shell脚本实战-if多分支条件语句详解

    文章目录 前言 多分支语句的语法 多分支语句举例: 1. 出嫁的条件 2. 管理http服务实战脚本 3. 猜数字游戏v1版本-if版本 总结 前言 前面我们已经学习过单分支语句和双分支语句的使用. ...

  3. shell脚本编程神器之awk语法案例详解

    AWK入门指南 文章目录 shell脚本编程神器之awk语法案例详解 安装AWK AWK 起步示例 AWK程序的结构 执行 awk 程序 awk 的错误提示 简单输出 打印每一行 打印特定行 NF,字 ...

  4. PHP cURL应用实现模拟登录与采集使用方法详解

    对于做过数据采集的人来说,cURL一定不会陌生.虽然在PHP中有file_get_contents函数可以获取远程链接的数据,但是它的可控制性太差了,对于各种复杂情况的采集情景,file_get_co ...

  5. 【linux 学习】shell脚本自动化登录

    每次登录都需要输入密码,,好麻烦滴感觉,于是想做个自动登录脚本,岂不美哉^ . ^ 如何输入密码是个大问题,好在有个交互输入的工具[expect] 首先需要安装一下, [Centos] #查看是否安装 ...

  6. 【Linux】shell脚本实战-if单双分支条件语句详解

    文章目录 if单分支 1. 单分支语法分析 2. 单分支语法规范 if双分支语法分析 3. if单分支和双分支脚本举例 a. 检查是否为超级用户(双分支) b. 找一个金钱大于1000000的结婚(单 ...

  7. 【Shell】20天学会shell脚本命令(2)变量的详解

    一.问题 1.1.环境 电脑环境:Windows 10: Docker版本:Server Version: 19.03.3 1.2.问题 shell脚本一直是Linux的必回只语言:就像去英语系国家工 ...

  8. expect和shell脚本自动登录跳板机和使用AppleScript实现自动登录vpn软件

    作为一个程序员,一定要学会"偷懒",能写程序写脚本处理的一定不要自己手动搞.我就是一个懒人,每次登录公司的跳板机我都无比痛苦,因为这个过程分为下面这些步骤. 敲跳板机命令 输入密码 ...

  9. linux svn 增量备份脚本,svn全量和增量备份详解(示例代码)

    1.svn的安装: yum安装: yum install -y subversion mkdir /data/svn svnadmin create project-1 svnadmin create ...

最新文章

  1. 学数学,你要如何过题海:游泳?冲浪?划小船?开游艇?
  2. s域到c语言离散化方法,离散化方法研究.docx
  3. www.pythonchanlleges.com
  4. redis api-zset
  5. 数据库切换时的一个傻逼的错误。
  6. C#完美实现透明窗体的绘制效果
  7. oracle对象权限 函数,oracle的系统和对象权限
  8. 共用软件现漏洞未修复,一年来美国数十个政府网站在推送色情广告
  9. c++多线程——线程启动
  10. 【计算机视觉】人脸识别总结
  11. 小字符喷码机和高解析喷码机的区别
  12. Blender3.0一些建模技巧与应用
  13. ps4仁王服务器不稳定,原来《仁王》放弃独占PS4早有预兆 未来将是跨平台大潮...
  14. cloudstack vpc network egress-ingress rules
  15. idea修改背景颜色
  16. P1024 [NOIP2001 提高组] 一元三次方程求解
  17. 一款强大的红队信息收集和资产收集工具(Kscan)
  18. EF Attatch()方法附加对象
  19. 【python】输入一个值,输出以这个值为公比,1为首项的等比数列前10项
  20. 你说的H5到底是什么,跟Html有什么关系,能吃吗

热门文章

  1. 清华南开出品最新视觉注意力机制Attention综述
  2. 把梯度下降算法变成酷炫游戏,这有一份深度学习通俗讲义
  3. 日读论文100+,AI都替代不了!辞去医药研发总监后,她成为了一名全职学术警察...
  4. 自然语言不等于英语,为什么NLPer应当认识到这个问题,以及该怎么做?
  5. 不同浏览器Cookie有效期问题
  6. 复习计算机网络基础 day3---什么是计算机网络:
  7. (解释)单片机与各种外围设备(Flash、RAM、网络控制器、A/D、传感器、MCU等)进行直接串行通信通常采用( D)接口
  8. 使用Python+OpenCV实现图像数据采集
  9. 一文概览深度学习中的激活函数
  10. 对抗图像和攻击在Keras和TensorFlow上的实现