shell脚本实现SSH免密登陆和批量处理 expect命令 一时失言乱红尘 2023-06-17 14:55 182阅读 0赞 索引 批量工具自然不用多说,ansible、saltstack、pssh等工具,当然这些工具一般情况都是在使用密钥免密基础之上,ansible将主机密码写在配置中除外 Expect是在Tcl基础上创建起来的,它还提供了一些Tcl所没有的命令,它可以用来做一些linux下无法做到交互的一些命令操作,在远程管 理方面发挥很大的作用。 spawn命令激活一个Unix程序来进行交互式的运行。 send命令向进程发送字符串。 expect 命令等待进程的某些字符串。 expect支持正规表达式并能同时等待多个字符串,并对每一个字符串执行不同的操作. **使用前要安装expect** ## yum安装 ## yum -y install expect ## 源码安装 ## 1.下载源码包 > wget > http://sourceforge.net/projects/expect/files/Expect/5.45/expect5.45.tar.gz/download 2.解压缩源码包 > tar xzvf expect5.45.tar.gz 3.安装配置 > cd expect5.45 ./configure --prefix=/usr/expect --with-tcl=/usr/tcl/lib > –with-tclinclude=…/tcl8.4.11/generic > > make make install ln -s /usr/tcl/bin/expect /usr/expect/bin/expect 查看172.46.28.74、172.46.28.75、172.46.28.76三台机器的网卡信息 cat spawn.sh #!/bin/bash expect <<EOF spawn ssh 172.46.28.74 "ip a" expect { "password" { send "12345678\n" } } expect eof EOF expect <<EOF spawn ssh 172.46.28.74 "ip a" expect { "password" { send "12345678\n" } } expect eof EOF expect <<EOF spawn ssh 172.46.28.75 "ip a" expect { "password" { send "12345678\n" } } expect eof EOF expect <<EOF spawn ssh 172.46.28.76 "ip a" expect { "password" { send "12345678\n" } } expect eof EOF ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21lbW9yeTYzNjQ_size_16_color_FFFFFF_t_70] 也可以选择使用shc工具对脚本加密,它的作用是把shell脚本转换为一个可执行的二进制文件,这个办法很好的解决了脚本中含有IP、密码等不希望公开的问题 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21lbW9yeTYzNjQ_size_16_color_FFFFFF_t_70]: https://img-blog.csdnimg.cn/20191129164756264.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21lbW9yeTYzNjQ=,size_16,color_FFFFFF,t_70
还没有评论,来说两句吧...