脚本链接 ssh 自动输入密码
上周工作中,遇见一些重复性的工作,为了方便,于是写起了脚本。
在这个脚本中,需要通过 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 自动输入密码相关推荐
- Shell脚本交互:自动输入密码
Shell脚本交互:自动输入密码 平时在控制台输入指令如:sudo.ssh.ftp或者修改admin权限的文件时候都会要求输入password,但是在she'll脚本运行过程中该如何交互实现自动输入密 ...
- linux ssh 脚本 密码,ssh自动登录的4种实现方法
1. 自动ssh/scp方法 A为本地主机(即用于控制其他主机的机器) ; B为远程主机(即被控制的机器Server), 假如ip为192.168.60.110; A和B的系统都是Linux 在A上运 ...
- SSH自动输入密码,取消首次连接确认
SSH是最常用的工具了,ssh username@ipAddress 即发起到远程主机的访问.随后输入远程机器的密码即可连接,同时,首次连接到远程主机还会要求获得远程主机的公钥,这时必须手动输&quo ...
- ssh自动输入密码登录服务器/ssh免输入密码登录/非交互ssh 密码验证
From: http://www.linuxidc.com/Linux/2011-02/31921.htm 由于经常需要登录一些远程的服务器,每次都需要将密码重输一遍,如下: #ssh 用户名@我的服 ...
- Linux ssh shell 自动登录,shell脚本实现ssh自动登录功能分享
文件名:ssh_auto_login #!/usr/bin/expect ## # ssh模拟登陆器 # # @author zhiyuan ## if {$argc<4} { puts &qu ...
- Linux 自启动.sh脚本使用sudo自动输入密码
1.root下,vi /etc/sudoers : [root@guanz etc]# vi /etc/sudoers [root@guanz etc]# # 添加如下内容: guanz ALL=(A ...
- [转]expect实现ssh自动交互
shell脚本实现ssh自动登录远程服务器示例: #!/usr/bin/expect spawn ssh root@192.168.22.194 expect "*password:&quo ...
- linux用户自动输入密码,Linux自动输入密码登录用户
每次进去Linux系统,都有切换root用户,输入密码很麻烦,所以就写了一个小脚本,自动输入密码,登录到root用户, 1,首先检查一些是否安装了expect root@wuzs:/home/wuzs ...
- Openwrt配置ssh自动登录服务器socks5转发
http://blog.onovps.com/archives/openwrt-ssh-socks5.html 本文目的实现Openwrt自动ssh数据转发,内部局域网用户可随时通过此ssh实现代** ...
最新文章
- uva 11134——Fabled Rooks
- NLP《词汇表示方法(五)GloVe》
- Restorator 2007 3.70.1729
- 个人微信api接口调用,微信好友收发消息
- 固体火箭发动机零维内弹道方程组
- 读书笔记之《史记》读后感心得体会
- 写c++好的软件_族谱家谱制作怎么写?专业的家谱族谱编辑制作软件哪个好
- 鲶鱼效应 互联网倒逼传统金融业转型
- xshell 批量创建.xsh会话文件
- android 联系人 拼音,Android 2.1 (Eclair)的中文联系人拼音检索问题
- Java并发编程 - 第三章 Java内存模型
- DHCP和DHCP中继
- gige相机二次开发_GigE Vision接口摄像机及其应用
- HTTP常见状态码:400\500 错误代码
- 怎么开通代付通道接口?
- TCL2010年校园招聘笔试,一面———我的第一次应聘
- 【指纹识别】指纹识别【含GUI Matlab源码 029期】
- feed流和瀑布流_推荐系统之Feed流UI交互设计
- 怎么判断数据是否符合某个统计学分布
- Linux系统管理笔记
热门文章
- 星际争霸1终于可以在win10上运行了
- HDU 2047 阿牛的EOF牛肉串的java实现思路
- 建设工程法规专科【6】
- 网页版chatGPT,国内直接打开就用的chatgpt
- canvas实现走势图实现
- 大二课设,采用 bootstrap + express + mysql 实现电影售票系统(附带源码)
- 李俊峰:碳达峰、碳中和决策不是心血来潮,2030年碳达峰不是一件特别难的事
- MxCAD5.2 2017.2.23更新
- bat脚本自动截取浏览器网页(整个网页那种)
- 计算机基础之流水线(七)