上周工作中,遇见一些重复性的工作,为了方便,于是写起了脚本。

在这个脚本中,需要通过 s s h ssh ssh 链接到远程服务器,然后执行特定的操作,但是链接服务器的时候, s s h ssh ssh 需要验证是否信任机器(第一次链接的话需要输入 y e s yes yes)以及密码,如果每次都要自己手动去操作,就失去了脚本的意义。此时, e x p e c t expect expect 脚本就派上了用场。

首先安装 e x p e c t expect expect,因为默认是没有安装这个的, U b u n t u Ubuntu Ubuntu 系统可以直接通过 s u d o a p t − g e t i n s t a l l e x p e c t sudo\ apt-get\ install\ expect sudo apt−get install expect 来安装,然后写好 e x p e c t expect expect 脚本,假如说叫做 l o g i n − v i a − s s h login-via-ssh login−via−ssh,如果脚本没有参数的话,直接 e x p e c t l o g i n − v i a − s s h expect\ login-via-ssh expect login−via−ssh 就可以了,注意必须用 e x p e c t expect expect 来运行这个脚本,其他 s h e l l shell shell 工具是无法解析这个脚本的。

不过我这里写的 l o g i n − v i a − s s h login-via-ssh login−via−ssh 脚本有一些参数:

Usage: expect login-via-ssh username password hostname realip script

主要功能是通过 s s h ssh ssh 链接到用户名为 u s e r n a m e username username,密码为 p a s s w o r d password password 的服务器,服务器的主机名叫做 h o s t n a m e hostname hostname,真实的 I P IP IP 地址为 r e a l i p realip realip,链接到这个服务器后执行 s c r i p t script script 脚本。

#!/usr/bin/expect -fset timeout 10
set username [lindex $argv 0]
set password [lindex $argv 1]
set hostname [lindex $argv 2]
set realip   [lindex $argv 3]
set script   [lindex $argv 4]spawn ssh -l $username $realip "echo '$password' | sudo -S ~/$script $hostname"expect {"(yes/no)?" {send "yes\n"expect "password:"send "$password\n"}"password:" {send "$password\n"}
}interact

这里用来实现自动输入的是 e x p e c t expect expect 部分,当检测到 ( y e s / n o ) ? (yes/no)? (yes/no)? 的时候,会自动输入 y e s yes yes,检测到 p a s s w o r d : password: password: 时会自动输入 p a s s w o r d password password。

另外, s p a w n spawn spawn 后双引号里的内容,是要在 s s h ssh ssh 远程链接到的服务器上执行的,因为 s u d o sudo sudo 权限需要键入密码,所以通过 e c h o echo echo 的方式来进行自动输入密码。

说到这里,就不得不说的是,常见的自动输入密码的方法有三种,但是对于 s s h ssh ssh 和 s c p scp scp 这种命令只能通过 e x p e c t expect expect 来进行自动输入密码的操作。

x s c p xscp xscp 脚本:

#!/usr/bin/expect -f
# Usage: expect xscp a b cset timeout 10
set source [lindex $argv 0]
set target [lindex $argv 1]
set passwd [lindex $argv 2]spawn scp $source $targetexpect {"(yes/no)?" {send "yes\n"expect "password:"send "$passwd\n"}"password:" {send "$passwd\n"}
}interact

更多有趣的脚本欢迎大佬们指点。

脚本链接 ssh 自动输入密码相关推荐

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

    Shell脚本交互:自动输入密码 平时在控制台输入指令如:sudo.ssh.ftp或者修改admin权限的文件时候都会要求输入password,但是在she'll脚本运行过程中该如何交互实现自动输入密 ...

  2. linux ssh 脚本 密码,ssh自动登录的4种实现方法

    1. 自动ssh/scp方法 A为本地主机(即用于控制其他主机的机器) ; B为远程主机(即被控制的机器Server), 假如ip为192.168.60.110; A和B的系统都是Linux 在A上运 ...

  3. SSH自动输入密码,取消首次连接确认

    SSH是最常用的工具了,ssh username@ipAddress 即发起到远程主机的访问.随后输入远程机器的密码即可连接,同时,首次连接到远程主机还会要求获得远程主机的公钥,这时必须手动输&quo ...

  4. ssh自动输入密码登录服务器/ssh免输入密码登录/非交互ssh 密码验证

    From: http://www.linuxidc.com/Linux/2011-02/31921.htm 由于经常需要登录一些远程的服务器,每次都需要将密码重输一遍,如下: #ssh 用户名@我的服 ...

  5. Linux ssh shell 自动登录,shell脚本实现ssh自动登录功能分享

    文件名:ssh_auto_login #!/usr/bin/expect ## # ssh模拟登陆器 # # @author zhiyuan ## if {$argc<4} { puts &qu ...

  6. Linux 自启动.sh脚本使用sudo自动输入密码

    1.root下,vi /etc/sudoers : [root@guanz etc]# vi /etc/sudoers [root@guanz etc]# # 添加如下内容: guanz ALL=(A ...

  7. [转]expect实现ssh自动交互

    shell脚本实现ssh自动登录远程服务器示例: #!/usr/bin/expect spawn ssh root@192.168.22.194 expect "*password:&quo ...

  8. linux用户自动输入密码,Linux自动输入密码登录用户

    每次进去Linux系统,都有切换root用户,输入密码很麻烦,所以就写了一个小脚本,自动输入密码,登录到root用户, 1,首先检查一些是否安装了expect root@wuzs:/home/wuzs ...

  9. Openwrt配置ssh自动登录服务器socks5转发

    http://blog.onovps.com/archives/openwrt-ssh-socks5.html 本文目的实现Openwrt自动ssh数据转发,内部局域网用户可随时通过此ssh实现代** ...

最新文章

  1. uva 11134——Fabled Rooks
  2. NLP《词汇表示方法(五)GloVe》
  3. Restorator 2007 3.70.1729
  4. 个人微信api接口调用,微信好友收发消息
  5. 固体火箭发动机零维内弹道方程组
  6. 读书笔记之《史记》读后感心得体会
  7. 写c++好的软件_族谱家谱制作怎么写?专业的家谱族谱编辑制作软件哪个好
  8. 鲶鱼效应 互联网倒逼传统金融业转型
  9. xshell 批量创建.xsh会话文件
  10. android 联系人 拼音,Android 2.1 (Eclair)的中文联系人拼音检索问题
  11. Java并发编程 - 第三章 Java内存模型
  12. DHCP和DHCP中继
  13. gige相机二次开发_GigE Vision接口摄像机及其应用
  14. HTTP常见状态码:400\500 错误代码
  15. 怎么开通代付通道接口?
  16. TCL2010年校园招聘笔试,一面———我的第一次应聘
  17. 【指纹识别】指纹识别【含GUI Matlab源码 029期】
  18. feed流和瀑布流_推荐系统之Feed流UI交互设计
  19. 怎么判断数据是否符合某个统计学分布
  20. Linux系统管理笔记

热门文章

  1. 星际争霸1终于可以在win10上运行了
  2. HDU 2047 阿牛的EOF牛肉串的java实现思路
  3. 建设工程法规专科【6】
  4. 网页版chatGPT,国内直接打开就用的chatgpt
  5. canvas实现走势图实现
  6. 大二课设,采用 bootstrap + express + mysql 实现电影售票系统(附带源码)
  7. 李俊峰:碳达峰、碳中和决策不是心血来潮,2030年碳达峰不是一件特别难的事
  8. MxCAD5.2 2017.2.23更新
  9. bat脚本自动截取浏览器网页(整个网页那种)
  10. 计算机基础之流水线(七)