用expect实现ssh自动登录服务器并进行批量管理的实现方法
shell代码:
#!/usr/local/bin/expect
set PASSWD [lindex $argv 1]
set IP [lindex $argv 0]
set CMD [lindex $argv 2]
spawn ssh $IP $CMD
expect "(yes/no)?" {
send "yesr"
expect "password:"
send "$PASSWDr"
} "password:" {send "$PASSWDr"} "*host " {exit 1}
expect eof
注解:
第一行,制定使用/usr/local/bin目录下的expect命令对后面的程序进行解释。
第二行,三行,四行,分别从命令行参数中获取要登录的主机IP地址,登陆密码,以及要执行的命令。
第五行,大概就是要触发这样一个事件,执行ssh $IP $CMD命令。
第6行至第11行就是expect的整个交互过程了。
如果读取到(yes/no)?提示符,就输入yes并回车,如果读取到password:提示输入密码的字符串,就输入用户登录密码(root用户)。
当然如果不是第一次登陆,以前已经登录过的话,当输入ssh $IP $CMD回车后,会直接提示输入密码也就是说会读到字符串”* password:”,这个时候会输入密码回车(send "$PASSWDr").
另外,如果主机不可达的话,(yes/no)?和”password:”的可能都不会出现,系统会提示:
“No route to host”退出程序。
相关推荐
-
java通过ssh连接服务器执行shell命令详解及实例
java通过ssh连接服务器执行shell命令详解 java通过ssh连接服务器执行shell命令:JSch 是SSH2的一个纯Java实现.它允许你连接到一个sshd 服务器,使用端口转发,X11转发,文件传输等等.你可以将它的功能集成到你自己的 程序中.同时该项目也提供一个J2ME版本用来在手机上直连SSHD服务器. SSH是Secure Shell的缩写,一种建立在应用层和传输层基础上的安全协议.SSH在连接和传送过程中会加密所有数据,可以用来在不同系统或者服务器之间进行安全连接.SSH提
-
ubuntu16.04服务器配置ssh免密码登录
在客户端操作 ssh-keygen -t rsa 文件位置写/home/try/.ssh/server_rsa,不使用默认值,我命名为server_rsa担心影响到git的key(因为我的git使用的是默认值) ssh-copy-id root@123.45.56.78(你的服务器ip), 或这使用 cat ~/.ssh/id_rsa.pub | ssh user@123.45.56.78 "mkdir -p ~/.ssh && cat >> ~/.ssh/autho
-
SSH在登录服务器后如何显示基础信息
前言 本文主要给大家介绍了SSH登录服务器后显示基础信息的相关内容,分享出来供大家参考学习,下面来看看详细的介绍: 方法如下: 安装landscape-common,可以在登录时候显示一些基础的信息,例如CPU内存占用等等 sudo apt-get install landscape-common 安装update-notifier-common,当有软件包更新的时候,会在SSH登录成功后提示用户 sudo apt-get install update-notifier-common 效果如下:
-
SSH设置别名访问远程服务器详细介绍
SSH设置别名访问远程服务器详细介绍 一般使用ssh访问远程服务器的命令是:ssh username@ip地址, 例如:ssh root@112.232.12.12,然后输入密码即可访问. 以Mac OS为例,其他操作系统,根据目录自行查找 设置如下: 使用cd ~/.ssh/ 进入ssh目录,会看到有config.known_hosts两个文件,一般的没有设置的话,只会有known_hosts,可以使用touch config命令创建config文件. 使用vim编辑config文件,添加如下
-
python下paramiko模块实现ssh连接登录Linux服务器
本文实例讲述了python下paramiko模块实现ssh连接登录Linux服务器的方法.分享给大家供大家参考.具体分析如下: python下有个paramiko模块,这个模块可以实现ssh登录linux服务器,下面贴出代码,注意,我在centos5.6下,python2.6.5,paramiko-1.7的版本下测试成功. #!/usr/bin/env python import paramiko hostname='172.28.102.249' username='root' passwor
-
Windows上SSH服务器配置图文教程
一.ssh服务器安装 1).我们使用免费软件freeSSHd.点击下载 2)安装完成后进入配置界面, (1)Server State中确保SSH服务已打开 如果此处出现不能打开的情况,在SSH界面将Start SSH server on free SSHd startup前边的勾去掉,如图: (2)进入Users界面,Add一个新用户,如slave. Authorization选择公钥形式,并给予Shell权限.选择PassWord需要每次登录填写密码. (3)在Authentication界面
-
简单架设SSH+Squid代理服务器的自由上网通道的方法
而SSH则很好地解决了这个问题.你只需要一个vps,就可以配置了.架设还是挺容易的. 安装webmin webmin是一个可视化管理linux系统的免费软件.我们安装它是为了方便管理squid代理服务器或者linux系统.详细安装地址如下: CentOS 安装Webmin管理系统 安装squid代理服务器 1.在安装squid之前,我们需要安装EPEL软件包. 复制代码 代码如下: rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i38
-
Windwos下使用winscp和批处理实现通过SSH端口上传文件到Linux服务器上
Windwos下使用winscp和批处理实现通过SSH端口上传文件到Linux服务器上 今天同事想在windows上使用winscp上传文件到linux服务器上,又想偷懒想使用批处理来进行上传,还好只固定上传一个php文件,多了还真不好搞. 1.下载winscp 大家可以去网上自己找,我把winscp安装在c:下的 2.把要执行的命令保存到文件winscp.bat里,这个winscp.bat可以自己创建,我是放在d:下的. winscp.bat脚本内容: 复制代码 代码如下: option co
-
用expect实现ssh自动登录服务器并进行批量管理的实现方法
shell代码: 复制代码 代码如下: #!/usr/local/bin/expectset PASSWD [lindex $argv 1]set IP [lindex $argv 0]set CMD [lindex $argv 2]spawn ssh $IP $CMDexpect "(yes/no)?" {send "yesr"expect "password:"send "$PASSWDr"} "pass
-
ssh自动登录的4种实现方法
1. 自动ssh/scp方法 A为本地主机(即用于控制其他主机的机器) ;B为远程主机(即被控制的机器Server), 假如ip为192.168.60.110;A和B的系统都是Linux 在A上运行命令:# ssh-keygen -t rsa (连续三次回车,即在本地生成了公钥和私钥,不设置密码)# ssh root@192.168.60.110 "mkdir .ssh" (需要输入密码)# scp ~/.ssh/id_rsa.pub root@192.168.60.110:.ssh/
-
python pexpect ssh 远程登录服务器的方法
使用了python中的pexpect模块,在测试代码之前,可输入python进入交互界面,输入help('pexpect'),查询是否本地含有pexpect模块. 如果没有,linux系统输入 easy_install pexpect便可自动安装. 测试代码,连接127.0.0.1 下面是我手动连接127.0.0.1, 发现只有在首次使用ssh连接127.0.0.1时,需要输入yes or no ,而后再次使用ssh ,则不需要再次输入yes 直接输入密码即可. 后续测试代码是二次链接,无需查询
-
shell脚本实现ssh自动登录功能分享
文件名:ssh_auto_login 复制代码 代码如下: #!/usr/bin/expect### ssh模拟登陆器## @author zhiyuan <hzyhouzhiyuan艾特gmail.com>##if {$argc<4} { puts "Error params: $argv" puts "Expect params :user passwd ip port [translate_id]" exit 1} set default_p
-
用expect实现的自动登录到多台服务器的shell脚本
复制代码 代码如下: #!/usr/bin/expect -fset ipaddress [lindex $argv 0]set passwd [lindex $argv 1]set timeout 30spawn ssh root@$ipaddress#expect "yes/no"#send "yesr"expect "password:"send "$passwdr"expect "]*"send &
-
SSH证书登录方法详细教程
目录 一.非证书登录的缺点 二.证书登录是什么? 三.证书登录的流程 四.生成 CA 的密钥 五.CA 签发服务器证书 六.CA 签发用户证书 七.服务器安装证书 八.服务器安装 CA 公钥 九.客户端安装证书 十.客户端安装 CA 公钥 十一.废除证书 SSH是服务器登录工具,密码登录和密钥登录,都有各自的缺点.SSH还有第三种登录方法,那就是证书登录.很多情况下,它是更合理.更安全的登录方法,本文介绍证书登录的方法,需要的朋友可以参考下. 一.非证书登录的缺点 密码登录和密钥登录,都有各自的
-
ssh expect自动登录的脚本代码
实现:ssh远程登录,每次都要指定一堆用户名和密码,现要求实现自动登录.登录流程:本地A 先登录到 B 再由B 登录到最终的C 如下: 复制代码 代码如下: #!/usr/bin/expect -fset timeout 30spawn ssh Bexpect "password:"send "passwd@\r"expect "]*"send "ssh name@C -p port\r"expect "passwo
-
Linux中使用expect脚本实现远程机器自动登录
首先创建一个expect脚本ssh_expect,文件内容如下: #!/usr/bin/expect -f set hostname [lindex $argv 0] set user [lindex $argv 1] set passwd [lindex $argv 2] set timeout 30 set force_conservative 1 if {$force_conservative} { set send_slow {128 .1} } spawn ssh $user@$hos
-
设置ssh无密码登录linux服务器的方法
每次登录测试服务器,ssh登录总是需要输入密码.登录的少还行,登录的多了,多一行命令都是多余的. rsa认证登录方式 制作密钥对 在客户端(本地机器)终端下输入以下命令 ssh-keygen -t [rsa|dsa] rsa和dsa代表不同的算法 例如: ssh-keygen -t rsa 一直回车就对了(不用设置密码) 将会生成密钥文件和私钥文件 id_rsa,id_rsa.pub(如果用dsa则生成id_dsa,id_dsa.pub) 生成位置在/root/.ssh/文件夹下(我用的是roo
随机推荐
- PostgreSQL数据库中跨库访问解决方案
- MySQL创建用户与授权方法
- js几秒以后倒计时跳转示例
- Python多维/嵌套字典数据无限遍历的实现
- 不错的一篇网络管理员入门与基础技术文章第1/2页
- Java Web编程之Servlet技术详解
- 解决Android解析图片的OOM问题的方法!!!
- MySQL定时备份之使用Linux下的crontab定时备份实例
- php 数据库字段复用的基本原理与示例
- 如何取回已忘记的密码?
- Javascript miscellanea -display data real time, using window.status
- javascript自动给文本url地址增加链接的方法分享
- 安卓(Android)开发之自定义饼状图
- 谈谈PHP语法(5)
- angularjs 页面自适应高度的方法
- linux Dig命令使用大全
- 全面解析Java设计模式之单例模式
- vue基于viewer实现的图片查看器功能
- JS实现鼠标拖拽盒子移动及右键点击盒子消失效果示例
- vue2.0$nextTick监听数据渲染完成之后的回调函数方法