linux shell用expect自动输入密码

最近有东西需要部署到很多服务器上去,一个服务器一个服务器的部署实在是在麻烦了,就想着用脚本自动部署来着,想的是在一台服务器上放上部署包,scp拷贝过去,然后ssh执行那边的部署脚本,但是苦于密码不能自动输入,后面找到了一个方法用expect

按行读取文件

首先得把所有得服务器信息从配置文件中一行一行的读取出来

# list.txt 是存储服务器信息的文件
# deploy.sh 是部署的脚本 cat list.txt | while read LINE
do
./deploy.sh $LINE
done

expect

首先,你得下载这个命令
sudo apt-get install expect

详细的语法,可以看这位大佬的文章

有两种用法,一种是

#!/bin/bash

expect -c "
spawn scp ./test.txt root@192.168.100.22:/root
expect {
\"yes/no\" {send \"yes\r\";exp_continue;}
\"*password\" {set timeout 500;send \"123456\r\";}
}
expect eof"

第二种用法(其实实质还是一样的):

#!/bin/expect

spawn scp ./test.txt root@192.168.100.22:/root
expect {
"yes/no" {send "yes\r";exp_continue;}
"*password" {set timeout 500;send "123456\r";}
}

解释一下:
spawn: 是开一个新的进程去执行后面的命令
expect: 是获取spawn命令执行后的信息,看看是否和其事先指定的相匹配,如果匹配就会执行后面的内容。如果单独写expect不写spawn,就不会触发。
send: 发送指定的字符给系统。
exp_continue: 是让expect继续往下匹配。
eof: 关键字用于匹配结束符。

其他

我有一个脚本initial.sh是这样写的:

#!/bin/bash

read -p "Please Input: " num1
# ...

我也想要自动部署的时候,能够自动输入最开始我是这样的

yes "1" | tail -n 1 | ./initial.sh

yes,可以一直输出yes命令后的字符串,直到手动停止掉这个yes进程,如果yes后面不跟,就会默认输出y

,最后发现一个超级简单的办法

echo "1" | ./initial.sh

这样就可以达到目的。

linux shell用expect实现在scp时自动输入密码的更多相关文章

  1. 在 Linux 命令行脚本中执行 sudo 时自动输入密码

    使用 expect 实现自动登录的脚本的原理. 脚本代码如下: ############################################## #!/usr/bin/expect set ...

  2. linux脚本实现scp命令自动输入密码和yes/no等确认信息

    实现方式: 通过expect工具实现 #!/bin/bash yum -y install expect expect -c " spawn scp -r root@192.168.10.1 ...

  3. Linux中使用expect脚本实现远程机器自动登录_linux shell

    首先创建一个expect脚本ssh_expect,文件内容如下: #!/usr/bin/expect -f set hostname [lindex $argv 0] set user [lindex ...

  4. 在linux下python爬虫进程发生异常时自动重启直至正常结束的方法

    之前在做爬虫的时候遇到一种情况,当网络情况不太好的时候,爬虫爬到的链接在urlopen时会因为无法正常连接而报URLError或者timeout的错误导致陈序报错而终止:但是这些错误在重新运行陈序后能 ...

  5. 用expect实现SCP/SSH自动输入密码登录

    在命令行ssh远程登录服务器和scp远程传输文件都需要交互式输入密码,无法像mysql登录数据库 mysql -uroot -p123456一样直接完成. 其实可以用脚本依赖expect来达到这一目的 ...

  6. sshpass ssh登录时自动输入密码

    安装 直接安装 sudo apt-get install sshpass 源代码安装 wget http://sourceforge.net/projects/sshpass/files/sshpas ...

  7. 几种方法来实现scp拷贝时无需输入密码

    欢迎转载!转载时请注明出处:http://blog.csdn.net/nfer_zhuang/article/details/42646849 前言 我在工作中经常要将一些文件传输到另外一个服务器上, ...

  8. linux 执行远程linux上的shell脚本或者命令以及scp 上传文件到ftp--免密码登陆

    场景:在linux A 上执行Linux B上的shell脚本和命令 步骤1.设置ssh免登陆 1.SSH无密码登录 # 本地服务器执行(A机器):生成密钥对 ssh-keygen -t dsa -P ...

  9. Linux命令(27):shell 结合expect,多服务器批量分发数据

    shell 结合expect 写的批量scp脚本工具 except安装:http://www.cnblogs.com/lovychen/p/6525623.html expect用于自动化地执行lin ...

  10. Linux shell批量执行scp脚本工具

    转载: linux shell + expect:批量scp脚本工具             2011-09-13 15:51:06 分类: Python/Ruby 最近在准备一个部署的任务,其中有一 ...

随机推荐

  1. bouncycastle(BC) 实现SM2国密加解密、签名、验签

    https://www.cnblogs.com/dashou/p/14656458.html SM2国密加解密一个类就够了 <dependency> <groupId>org. ...

  2. .NET 9 增强 OpenAPI 规范

    在 .NET 9 的更新中,微软增强了原生 OpenAPI.这一变化表明 .NET 正在更加拥抱开放标准,同时让开发者体验更加轻松高效.本文将探讨为何进行这一更改.OpenAPI 的优势,以及如何在 ...

  3. The "https://packagist.phpcomposer.com/packages.json" file could not be down

    composer自身版本太低了,更新下 composer self-update 使用阿里云镜像 composer config -g repo.packagist composer https:// ...

  4. Solution Set -「NOIP Simu.」20221113

    \(\mathscr{A}\sim\) 游戏   Cover:「ARC 087E」Prefix-free Game.   Tags:「A.博弈-SG 函数」「A.数据结构-Trie」   想了半天 ( ...

  5. Solution -「NOI 2017」「洛谷 P3823」蚯蚓排队

    \(\mathscr{Description}\)   Link.   (自己看题, 我总不能让题意比题解还长吧?) \(\mathscr{Solution}\)   下一组我一定写成 solutio ...

  6. LCR 170. 交易逆序对的总数

    交易逆序对的总数 在股票交易中,如果前一天的股价高于后一天的股价,则可以认为存在一个「交易逆序对」.请设计一个程序,输入一段时间内的股票交易记录 record,返回其中存在的「交易逆序对」总数. 示例 ...

  7. Jetbrains系列产品无限时间重置插件

    概述Jetbrains家的产品有一个很良心的地方,他会允许你试用30天(这个数字写死在代码里了)以评估是否你真的需要为它而付费. 事实上有一款插件可以实现这个功能,你或许可以用它来重置一下试用时间.但 ...

  8. 字节流:FileInputStream和FileOutputStream的使用

    /** * 测试FileInputStream和FileOutputStream的使用 * * 结论: * 1. 对于文本文件(.txt,.java,.c,.cpp),使用字符流处理 * 2. 对于非 ...

  9. bullyBox pg walkthrough Intermediate

    nmap 发现80 和 22端口 访问80 端口发现 跳转 http://bullybox.local/ 在/etc/hosts 里面加上这个域名 dirsearch 扫描的时候发现了.git泄露 用 ...

  10. 一种基于alpine、支持ARM架构64位的镜像构建方法及其构建系统

    本文分享自天翼云开发者社区<一种基于alpine.支持ARM架构64位的镜像构建方法及其构建系统>,作者:郑****团 一种基于alpine.支持ARM架构64位的镜像构建方法及其构建系统 ...