Linux下用expect实现ssh自动登录并执行脚本
expect不是系统自带的,需要安装:
yum install expect
装完后才可执行以下脚本。
ssh密码认证的登陆脚本:
#!/bin/bash # 匹配提示符 CMD_PROMPT="\](\$|#)" # 要执行的脚本 script="/root/test.sh" username="root" password="123456" host="192.168.1.109" port=22 expect -c " send_user connecting\ to\ $host...\r # 空格要转义 spawn ssh -p $port $username@$host expect { *yes/no* { send -- yes\r;exp_continue;} *assword* { send -- $password\r;} } expect -re $CMD_PROMPT send -- $script\r expect -re $CMD_PROMPT exit " echo "\r"
ssh公钥认证的登陆脚本:
#!/bin/bash # 匹配提示符 CMD_PROMPT="\](\$|#)" # 要执行的脚本 script="/root/test.sh" username="root" password="123456" host="192.168.1.109" port=22 expect -c " send_user connecting\ to\ $host...\r spawn ssh -p $port $username@$host expect -re $CMD_PROMPT send -- $script\r expect -re $CMD_PROMPT exit " echo "\r"
1. send_user 是回显,相当于echo。
2. spawn 是开启新的进程
3. expect{ } 这是匹配上一条指令的输出,,比如上面spawn 那句执行完后,会提示你输入密码,提示语中会包含 password,因此就匹配*assword*,然后就send -- $password 把密码发过去。
4. send 就是发指令到对端
5. expect 内部有个exp_continue ,意思是重新匹配所在的expect,相当于while的continue
6. expect 的 -re 表示匹配正则表达式
ps:expect 内部的指令的参数中特殊字符需在前面加\转义
类似的还可实现ftp登陆,自动上传下载文件等等。
相关推荐
本篇文章给大家介绍在Linux中使用expect脚本实现远程机器自动登录,前提是要创建一个expec脚本ssh_expect,接下来定义一些命令别名等,下面跟着脚本之家小编一起学习学习吧
有时候我们需要批量发送ssh命令给服务器,但是有可能有些服务器是新加入的,还没有配置ssh免密,这个时候就会提示我们输入yes/no 或者password等,expect脚本命令就是用于在提示这些的时候,自动为我们输入相应的...
expect是一个基于Tcl的用于自动交互操作的工具语言,它适合用来编写需要交互的自动化脚本,比如上面提到的SSH输入...下面这篇文章主要给大家介绍了关于Linux expect实现自动登录脚本的相关资料,需要的朋友可以参考下。
文件名:ssh_auto_login 代码如下:#!/usr/bin/expect### ssh模拟登陆器## @author zhiyuan <hzyhouzhiyuan>##if {$argc<4} { puts “Error params: $argv” puts “Expect params :user passwd ip port ...
CentOS利用expect批量推送ssh public key的脚本
主要介绍了Shell脚本实现自动输入密码登录服务器,本文使用expect来实现这个需求,讲解了expect的安装及使用脚本,需要的朋友可以参考下
最近项目需要实现单边无密登录,去网上搜索了下相关文章,实践之后发现几乎都不能用。于是结合expect的使用方法自行写了一个,通过验证可用。现在总结在这供需要的朋友参考。 代码如下: EXPECT=/usr/bin/expect ...
现在有个任务是在这些电脑上执行某些命令,者说进行某些操作,比如安装某些软件,拷贝某些文件,批量关机等。如果一台一台得手工去操作,费时又费力,如果要进行多个操作就更麻烦啦。 或许你会想到网络同传,网络同...
/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...
使用expect实现自动登录的脚本,网上有很多,可是都没有一个明白的说明,初学者一般都是照抄、收藏。可是为什么要这么写却不知其然。本文用一个最短的例子说明脚本的原理。 脚本代码如下: #!/usr/bin/expect set ...
普通的shell脚本要支持ssh自动登录或者 sftp文件自动上传下载,需要lftp、expect等额外的工具辅助。但操作系统有时候未安装lftp和expect,只安装了python。此时,用python加paramiko模块,可以解决ssh、sftp自动登录...
expect是一种自动交互语言,能实现在shell脚本中为scp和ssh等自动输入密码自动登录。下面这篇文章主要介绍了linux中使用expect的方法示例,需要的朋友可以参考借鉴,下面来一起学习学习吧。
批量实现自动发送公钥到远程主机 环境 firewalld:关闭 selinux:关闭 实现方式 sshpass命令 shell调用expect命令 sshpass命令 #!/bin/bash # #***********************************************************...
expect用于自动化地执行linux环境下的命令行交互任务,例如scp、ssh之类需要用户手动输入密码然后确认的任务。有了这个工具,定义在scp过程中可能遇到的情况,然后编写相应的处理语句,就可以自动地完成scp操作了。 ...
需要对服务器进行批量的修改root密码,还要在每台服务器新建一个用户,如果一个一个登到的服务器上进行修改的话,估计一个下午又没有了,首先想到的是我最喜欢的php,其中有个ssh2 模块,不得不承认用php 来处理这样...
《Shell脚本专家指南》旨在为Linux、Unix以及OSx系统管理员提供短小精悍且功能强大的shell实现解决方案,教会读者如何使用现有调试器调试shell脚本。全书分为3个部分:脚本技术基础、系统交互和高级技术、有用的脚本...
虽然现在有ansible、saltstack等批量处理工具,但是在内网环境下,这些工具还需要离线安装,安装好之后还需要学会工具的使用方法,比较麻烦;甚至还有一些比较苛刻的企业,为了服务器安全,连ssh公钥都不让推送。...