linux下ssh自动登录的脚本(通过ip地址)

由于每次都要从中转的Linux服务器上链接到其它Linux服务器,每次都需要输入长串的ssh命令。并且还要重复输入用户名和密码,很繁琐。因此整理脚本,简化为每次只要输入主机ip即可自动登录!

第一.先要安装expect的支持环境:

 

Expect是基于Tcl语言的一种脚本语言,其实无论是交互还是非交互的应用场合,Expect都可以大显身手,但是对于交互式的特定场合,还非Except莫属。

 

第1步:使用root用户登录  

第2步:复制安装文件

       在合适的位置创建一个文件夹,例如soft

       修改文件夹读写权限

       chmod 777 soft

第3步:解压安装包

       [我已经上传了expect-5.43.0.tar.gz 和 tcl8.4.11-src.tar.gz 在本文后面可以点击下载

       注意: 如果下载后名称变化,请对照改名称成expect-5.43.0.tar.gz 和 tcl8.4.11-src.tar.gz ]

 

       把expect-5.43.0.tar.gz和tcl8.4.11-src.tar.gz复制到soft目录下,

       解压tcl8.4.11-src.tar.gz

       tar –xvf tcl8.4.11-src.tar.gz

       解压后将创建tcl8.4.11 文件夹

 

       解压expect-5.43.0.tar.gz

       tar –xvf expect-5.43.0.tar.gz

       解压后将创建expect-5.43 文件夹

       可以看出在/soft下有tcl8.4.11和tcl8.4.11 两个文件夹

 

第4步:安装tcl

       进入/soft/tcl8.4.11/unix 目录

        a.执行sed -i "s/relid'/relid/" configure

        b.执行./configure --prefix=/expect

        c.执行make

        d.执行make install

        e.执行mkdir -p /tools/lib

        f.执行cp tclConfig.sh /tools/lib/

        g. 将/tools/bin目录export到环境变量

           tclpath=/tools/bin

           export tclpath

 

第5步:安装Expect

        进入/soft/expect-5.43目录

        执行./configure --prefix=/tools --with-tcl=/tools/lib --with-x=no

        如果最后一行提示:

        configure: error: Can't find Tcl private headers

        需要添加一个头文件目录参数

        --with-tclinclude=../tcl8.4.11/generic,即

        ./configure --prefix=/tools --with-tcl=/tools/lib --with-x=no --with-tclinclude=../tcl8.4.11/generic

        ../tcl8.4.11/generic 就是tcl解压安装后的路径,一定确保该路径存在

        执行make

        执行make install

        编译完成后会生在/tools/bin内生成expect命令

        执行/tools/bin/expect出现expect1.1>提示符说明expect安装成功.

 

第6步:创建一个符号链接

        ln -s /tools/bin/expect /usr/bin/expect

        查看符号连接

        ls -l /usr/bin/expect

        lrwxrwxrwx 1 root root 17 06-09 11:38 /usr/bin/expect -> /tools/bin/expect

 

        这个符号链接将在编写expect脚本文件时用到,例如在expect文件头部会指定用于执行该脚本的shell

        #!/usr/bin/expect

        ...

        ...

 

第二expect的使用:

1.先打开root用户的命令行操作界面,在建立 mssh.sh文件:

touch  mssh.sh

2.编写 mssh.sh脚本,(我的一个普通用户是,用户名和密码都是admin )

vi  mssh.sh

#!/usr/bin/expect -f

#auto ssh login

set timeout 3

set sshhost [lindex $argv 0]

spawn ssh -l admin $sshhost

expect “(yes/no)?”

send "yes\r"

expect “password:”

send "admin\r"

interact

 

注解:

(1)spawn ssh -l admin $sshhost---------------spawn ssh -l  用户名   $sshhost;

$sshhost是设置的取主机ip的变量的调用!

(2)send "admin\r"---------------send "密码\r"

(3) #!/usr/bin/expect -f

#auto ssh login这里的#号必须要有,不是命令行提示的#!

 

3. 给文件加上可执行权限:

chmod +x ./mssh.sh

如果文件默认有其它权限,建议最好设置为只能自己读取,修改和执行

chmod 700 ./mssh.sh

 

4.测试成功:

./mssh.sh 192.168.1.113

直接登录到了admin用户!

 

注解:我的本地ip是:192.168.1.113

 

 

 

猜你喜欢

转载自kaixinguo1520726.iteye.com/blog/2096938