免费注册 查看新帖 |

Chinaunix

广告
  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3967 | 回复: 6
打印 上一主题 下一主题

一个方便ssh 登录的垃圾代码 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-11-16 18:36 |只看该作者 |倒序浏览
主脚本
#!/bin/bash
#
#
#
#E'mail:yibin.shen@infowarelab.com
#
#global variable

DATA="/home/debian/shell/login/ssh_host.dat"
SSHSCRIPT="/home/debian/shell/login/ssh_login.sh"

if [ ! -f "$DATA" ] ; then
    echo "DATA file doesn't exsit"
    exit 1
fi

if [ ! -x "$SSHSCRIPT" ] ; then
    echo "you need a expect script"
    exit 1
fi

#print menu 1
MainMenu()
{
clear
echo "-------------------------------------"
echo "+              1:hz-idc             +"
echo "+              2:gsb                +"
echo "+              3:beta               +"
echo "+              4:hzxs               +"
echo "+              5:jsbc               +"
echo "-------------------------------------"
echo -e "\n\n\n"
echo "-plz input your choice(1|2|3|4|5|)"
echo "enter q to quit this menu"
read IDC_NUM
}

#print menu 2
DisplayHosts()
{
awk '
BEGIN{FS = "\n"; RS = "" }'\
"\$1 ~ /$1/ {print \$0}" ${DATA} | \
awk '{print $1 "\t" $2}'

MAX=$(awk '\
BEGIN{FS = "\n"; RS = "" }'\
"\$1 ~ /$1/ {print \$0}" ${DATA} | \
awk '{print $1 "\t" $2}' | tail -1 | awk '{print $1}')

echo -e "plz enter your choice \n"
echo -e "enter b to go to previous menu\n"
echo -e "enter q to quit"
read CHOICE
case ${CHOICE} in
        [0-9]*)
        if [ ${CHOICE} -ge 1 ] && [ ${CHOICE} -le ${MAX} ]
            then
            LoginInit $1 ${CHOICE}
            else
            echo "error choice"
            DisplayHosts $1
        fi
        ;;
        b)
        MainMenu
        ;;
        q)
        exit 1
        ;;
        *)
        DisplayHosts $1
        ;;
esac
}

#login
LoginInit()
{
#get the host ip,user,pwd,and port
#$1 is the IDC value
RECORD=$(awk '
BEGIN{FS = "\n"; RS = "" }'\
"\$1 ~ /$1/ {print \$0}" ${DATA} | \
awk '$1 ~ '"/^$2/"'{print $0}')

USER=`echo $RECORD | awk '{print $4}'`
HOST=`echo $RECORD | awk '{print $2}'`
PASSWD=`echo $RECORD | awk '{print $5}'`
PORT=`echo $RECORD | awk '{print $4}'`

${SSHSCRIPT} ${USER} ${HOST} ${PASSWD}
}

#display menu
MainMenu

case ${IDC_NUM}  in
    1)
        DisplayHosts hz
        ;;
    2)
        DisplayHosts gsb
        ;;
    3)
        DisplayHosts beta
        ;;
    4)
        DisplayHosts xs
        ;;
    5)
        DisplayHosts jsbc
        ;;
    q)
        exit 1
        ;;
    *)
        echo "please input (1|2|3|4|5)"
        MainMenu
        ;;
esac


#script finished


用来保存登录信息的的文件格式,从第二字段起依次为IP,端口,用户,密码
hz-IDC
1       192.168.0.80    22      root    123456
2       192.168.0.81    22      root    123456
3       192.168.0.72    22      root    123456
4       192.168.0.46    22      root    asdfasdf
5       192.168.0.7     22      root    asdf

gsb
1       10.10.30.9      22       root   xxx
2       10.10.30.35     22       root   xxx2
3       10.10.30.34     22       root   xd
4       10.10.30.36     22       root   sss
5       10.10.30.37     22       root   sss
6       10.10.30.38     22       root   asdf
7       10.10.30.43     22       root   asdf



3ssh用到的expect脚本
spawn ssh -l $USER $HOST
set timeout 60
while {1} {
    expect -re "Are you sure you want to continue connecting (yes/no)?" {
            # First connect, no public key in ~/.ssh/known_hosts
            send "yes\r"
        } -re "assword:" {
            # Already has public key in ~/.ssh/known_hosts
            send "$PASSWD\r"
        } -re "ermission denied, please try again." {
            # Password not correct
            exit
        } -re "Connection refused" {
            exit
        } timeout {
            exit
        } "#" {
            interact
        } "losed" {
            exit
        }
}



主要思路很简单,将data文件中的ip信息显示出来,根据用户的选择,
生成user,root,passwd等信息,再调用expect脚本来自动登录,

脚本写的比较烂,欢迎大家批评指正,

论坛徽章:
0
2 [报告]
发表于 2007-11-16 18:41 |只看该作者
运行程序后显示

-------------------------------------
+              1:hz-idc             +
+              2:gsb                +
+              3:beta               +
+              4:hzxs               +
+              5:jsbc               +
-------------------------------------




-plz input your choice(1|2|3|4|5|)
enter q to quit this menu


输入q退出,
输入1后显示
hz-IDC
1       192.168.0.80
2       192.168.0.81
3       192.168.0.72
4       192.168.0.46
5       192.168.0.7
plz enter your choice

enter b to go to previous menu

enter q to quit

输入数字选择一个ip登录,输入q 退出,输入b回到主菜单,

论坛徽章:
0
3 [报告]
发表于 2007-11-16 18:48 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
4 [报告]
发表于 2007-11-16 18:54 |只看该作者
原帖由 lovegqin 于 2007-11-16 18:48 发表
ssh root@192.168.0.$1

把它放到一个脚本里。

比如/usr/local/bin 下 起名 lg

当要登陆到191
只需 lg 191

但我这里有几百台服务器...
是不同网段的...

论坛徽章:
0
5 [报告]
发表于 2007-12-12 11:26 |只看该作者
ssh  用到的那个脚本为什么我执行说
没有spawn这个命令呢

论坛徽章:
0
6 [报告]
发表于 2007-12-12 11:54 |只看该作者
ssh 可以用key方式登录,不需要输入密码,又比密码登录安全,为什么还要用expect填写密码?

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
7 [报告]
发表于 2007-12-12 12:13 |只看该作者
辛苦了兄弟,送你个鸡蛋补补身子
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP