[原创][分享]免密码SSH登录脚本,支持多服务器

sh/bash/dash/ksh/zsh等Shell脚本
回复
七分之雨后
帖子: 39
注册时间: 2007-07-26 14:25
送出感谢: 0
接收感谢: 0

[原创][分享]免密码SSH登录脚本,支持多服务器

#1

帖子 七分之雨后 » 2007-11-14 17:43

这段时间都是在用ubuntu,没有windows下的SecureCRT,服务器太多了密码实在不好打,嫌麻烦。
正好今天比较空闲,写了个expect的脚本。
脚本还有个缺点,服务器列表是数组,这样想删掉位于中间位置的服务器,就得重新编号,麻烦

另外请注意,密码以明文保存在文件中,注意保管脚本避免出问题!

用法:
1,如果没有安装expect,先
sudo apt-get install expect

2,然后建一个文件把下面的代码打进去

3,chmod 775 yourfile

代码: 全选

#!/usr/bin/expect
#
#用来快捷的SSH到服务器的懒人脚本
#@author  七分之雨后
#@email liang8305@gmail.com
#@version 0.1  2007/11/14
#
#
set SERVER(1) IP
set PORT(1) 端口
set USER(1) 用户名
set PASSWD(1) 密码

set SERVER(2) IP
set PORT(2) 端口
set USER(2) 用户名
set PASSWD(2) 密码

set SERVER(3) IP
set PORT(3) 端口
set USER(3) 用户名
set PASSWD(3) 密码

set SERVER(4) IP
set PORT(4) 端口
set USER(4) 用户名
set PASSWD(4) 密码




puts "选择你要登录的服务器\r"
set len [array size SERVER]
for { set i 1} {$i <= $len} { incr i} {
	puts "$i.. $SERVER($i)\r"
}
expect_user -re "(.*)\n"
set sn $expect_out(1,string)
send_user "$sn\r"
send_user "\r"

spawn ssh $USER($sn)@$SERVER($sn) -p $PORT($sn)
set timeout 1
expect "*yes/no*" {
        send "yes\r"
        expect "*password:" {send "$PASSWD($sn)\r"}
}
expect "*password:" {
	send "$PASSWD($sn)\r"
}
interact
头像
bones7456
论坛版主
帖子: 8495
注册时间: 2006-04-12 20:05
来自: 杭州
送出感谢: 0
接收感谢: 8 次
联系:

#2

帖子 bones7456 » 2007-11-15 21:27

想法不错,几点建议:
1.脚本的权限不要设成775了,这样密码很不安全,700就可以了.
2.建议把服务器列表另外做成一个纯文本文件保存,一行一个服务器,包含若干列,编辑也方便.程序读取也不麻烦.
关注我的blog: ε==3
yuffey
帖子: 193
注册时间: 2007-09-06 16:24
来自: 中国上海
送出感谢: 0
接收感谢: 0

#3

帖子 yuffey » 2007-11-24 13:15

感觉不好
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
送出感谢: 0
接收感谢: 7 次
联系:

#4

帖子 BigSnake.NET » 2007-11-24 13:17

用密钥登录
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
回复

回到 “Shell脚本”