一、sshpass和expect安装
sshpass是一款自动为ssh填充密码的开源插件,并没有对ssh做任何修改,是从外部进行的操作。sshpass实现比较简单,但是非常易用,原理与expect类似
在rhel6.4上,没有sshpass的软件包,无法采用yum方式安装。从源码编译安装非常简单。
- 下载sshpass源码:
https://sourceforge.net/projects/sshpass/ - 编译安装
$ tar -zxf sshpass-1.05.tar.gz
$ cd sshpass-1.05
$ ./configure
$ make && make install
expect是交互性很强的脚本语言,可以帮助运维人员实现批量管理成千上百台服务器操作,是一款很实用的批量部署工具!
expect依赖于tcl,而linux系统里一般不自带安装tcl,所以需要手动安装
-
下载:expect-5.43.0.tar和tcl8.4.11-src.tar
将expect和tcl的软件包下载放到/usr/local/src目录下 -
解压tcl,进入tcl解压目录,然后进入unix目录进行编译安装
[root@xw4 src]# tar -zvxf tcl8.4.11-src.tar.gz
[root@xw4 src]# cd tcl8.4.11/unix
[root@xw4 unix]# ./configure
[root@xw4 unix]# make && make install -
安装expect
[root@xw4 src]# tar -zvxf expect-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
二、expect spawn的用法
三、sshpass用法
实例1:直接远程连接某台主机:
命令:sshpass -p ‘密码’ ssh [email protected] 【默认为22端口】
实例2:远程连接指定ssh的端口:
命令:sshpass -p ‘密码’ ssh -p 1000 [email protected] (当远程主机不是默认的22端口时候)
实例3:从密码文件读取文件内容作为密码去远程连接主机
命令:sshpass -f xxx.txt ssh [email protected]
实例4:从远程主机上拉取文件到本地
命令: sshpass -p ‘123456’ scp root@host_ip:/home/test/t ./tmp/
附录:
1. ssh -o的常用选项
例:
ssh -o ConnectTimeout=3 连接超时时间,3秒
ssh -o ConnectionAttempts=5 连接失败后重试次数,5次
ssh -o PasswordAuthentication=no 不使用密码认证,没有互信直接退出
ssh -o StrictHostKeyChecking=no $ip “command” 自动信任主机并添加到known_hosts文件
2. inux 的软件安装目录是也是有讲究的,理解这一点,在对系统管理是有益的
/usr:系统级的目录,可以理解为C:/Windows/,
/usr/lib:理解为C:/Windows/System32。
/usr/local:用户级的程序目录,可以理解为C:/Progrem Files/。用户自己编译的软件默认会安装到这个目录下。
/opt:用户级的程序目录,可以理解为D:/Software,opt有可选的意思,这里可以用于放置第三方大型软件(或游戏),当你不需要时,直接rm -rf掉即可。在硬盘容量不够时,也可将/opt单独挂载到其他磁盘上使用。
那么源码究竟放哪里?
/usr/src:系统级的源码目录。
/usr/local/src:用户级的源码目录。