shell中嵌套expect实现ssh登录
来源:互联网 发布:怎么复制文件到mac 编辑:程序博客网 时间:2024/05/29 05:03
我想在某台测试服务器上集中监控一些服务器的磁盘空间。但是又不想配置主机信任关系,怕不安全,公司不允许。因此想通过shell脚本中嵌套expect方式来实现。
一:安装expect
expect是交互性很强的脚本语言,可以帮助运维人员实现批量管理成千上百台服务器操作,是一款很实用的批量部署工具!
expect依赖于tcl,而linux系统里一般不自带安装tcl,所以需要手动安装。
下载:expect-5.43.0.tar和tcl8.4.11-src.tar
下载地址:https://pan.baidu.com/s/1kVyeLt9
提取密码:af9p
将expect和tcl的软件包下载放到/usr/local/src目录下
(1)解压tcl,进入tcl解压目录,然后进入unix目录进行编译安装
[root@xw4 src]# tar -zvxftcl8.4.11-src.tar.gz
[root@xw4 src]# cd tcl8.4.11/unix
[root@xw4 unix]# ./configure
[root@xw4 unix]# make && make
(2)安装expect
[root@xw4 src]# tar -zvxfexpect-5.43.0.tar.gz
[root@xw4 src]# cd expect-5.43.0
[root@xw4 expect-5.43.0]# ./configure--with-tclinclude=/usr/local/src/tcl8.4.11/generic--with-tclconfig=/usr/local/lib/
[root@xw4 expect-5.43.0]# make &&make install
(3)安装完成后进行测试
[root@xw4 ~]# expect
expect1.1>
expect1.1>
二:修改/etc/hosts文件
比如我想在10.192.203.102机器上ssh访问10.0.9.121
我需要在10.192.203.102上修改/etc/hosts文件,添加要访问地址的IP及主机名对应关系:
10.0.9.121 ocp
否则后面ssh会报错:
reverse mapping checking getaddrinfo forbogon [10.0.9.121] failed - POSSIBLE BREAK-IN ATTEMPT!
三 嵌套expect的shell脚本
cat c.sh
IpGroup=('10.0.9.121' '10.0.9.122') for ip in ${IpGroup[@]}do /usr/local/bin/expect <<-EOF set timeout 3 spawn ssh oracle@$ip expect { "*yes/no" { send "yes\r"; exp_continue } "*password:" { send "oracle\r" } } expect "*#" send "df -h\r" expect "*#" send "exit\r" interact expect eofEOFdone
脚本内容介绍:
/*
set timeout n命令将expect命令的等待超时时间设置为n秒,在n秒内还没有获取到其期待的命令,expect 为false,脚本会继续向下执行;
spawn command命令会fork一个子进程去执行command命令,然后在此子进程中执行后面的命令;
send命令的一般用法为 send"string",它们会我们平常输入命令一样向命令行输入一条信息,当然不要忘了在string后面添加上 \r 表示输入回车;
send "oracle\r"表示输入用户的密码
interact:执行到此命令时,脚本fork的子进程会将操作权交给用户,允许用户与当前shell进行交互;
*/
#给脚本赋予执行权限
chmod +x c.sh
#调用脚本
sh c.sh
--本篇文章参考了:http://www.cnblogs.com/kevingrace/p/5900303.html
http://www.cnblogs.com/zhenbianshu/p/5867440.html
http://bbs.chinaunix.net/thread-2320506-1-1.html
- shell中嵌套expect实现ssh登录
- shell中嵌套使用expect 实例
- shell中嵌套执行expect命令实例
- [shell] 上传key后用expect 实现大量机器ssh首次登录
- expect解决ssh无法使用shell直接登录的问题
- expect实现脚本中ssh密码输入
- python: 用EXPECT 实现 ssh 登录(1)
- 利用expect script实现ssh免密码登录
- expect实现scp ssh自动输入密码登录
- 利用expect实现SSH登录密码的自动填充
- ssh登录脚本 expect语言中使用awk
- 在shell中使用expect+ssh登陆远程服务器
- shell脚本通过expect实现自动单边无密登录
- expect使用ssh登录脚本
- Linux expect自动登录ssh
- expect实现自动登录
- shell脚本嵌套执行expect命令
- shell实现ssh自动登录远程主机
- 第一次学习笔记,Makefile和uboot的一点东西
- 欢迎使用CSDN-markdown编辑器
- 【剑指offer】翻转单词顺序列
- Integer和int之间的==比较
- MongoDB Note
- shell中嵌套expect实现ssh登录
- Composer进阶使用
- 算法大法之--顺序表
- JVM原理和优化
- C++ 异或运算
- HoloLens开发学习笔记(一):HoloLens简介
- BI团队如何高效应对快速扩张的公司的需求 —— 阿里云MVP赵玮主题分享【2】
- Android Butter Knife(小刀)的注解
- linux 如何查找命令的路径