免费注册 查看新帖 |

Chinaunix

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

如何让脚本跳过提示输入密码的状态,继续执行 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-04-09 16:46 |只看该作者 |倒序浏览
写了一个脚本遍历所有机器,目的是想测试机器是否正常工作。但是会遇到一种情况:当某一台机器的密码有问题,登陆不了,该脚本就停在提示输入密码的状态,不往下进行了,直到超时。有什么办法可以让脚本自动忽略这种情况,继续执行遍历,最后再分析输出报告?
    谢谢。

论坛徽章:
0
2 [报告]
发表于 2007-04-09 17:26 |只看该作者
自己顶一下。

论坛徽章:
0
3 [报告]
发表于 2007-04-09 17:35 |只看该作者
您怎么写的脚本?用expect的话,输入用户名、密码后,判断返回提示符,如果是shell提示符,进行您的测试服务器操作,如果仍是“login:”,则送两个字符串——“ctrl+]”,“quit\n”,然后continue循环。

论坛徽章:
0
4 [报告]
发表于 2007-04-09 17:36 |只看该作者
用expect很好做

论坛徽章:
0
5 [报告]
发表于 2007-04-09 17:41 |只看该作者
谢谢楼上两位,我试试看。

论坛徽章:
0
6 [报告]
发表于 2007-04-11 18:20 |只看该作者
研究了下expect,但是遇到新的问题:
不用expect时,一句shell脚本就可以完成最简单的功能:
for i in `cat ./serverlist`; do echo -----$i-----; ssh $i 'id'; done
但是遇到密码有问题的机器就会出现3次提示输入密码。

单独用一段expect脚本也可以测试成功:

#!/usr/bin/expect -f
spawn ssh server1
expect "*word*"
send "\r"
expect "*word*"
send "\r"
expect "*word*"
send "\r"
expect eof

但是不知道如何将两个脚本写在一起?如何处理循环读取机器列表文件?
请指教。

论坛徽章:
0
7 [报告]
发表于 2007-04-11 19:34 |只看该作者
  1. for {set i 0} {$i < 3} {incr i} {
  2. body
  3. }
复制代码

论坛徽章:
0
8 [报告]
发表于 2007-04-11 22:57 |只看该作者
谢谢楼上,但是列表中的机器个数不定,用这样的循环如何实现?

论坛徽章:
0
9 [报告]
发表于 2007-04-12 11:25 |只看该作者
for i in `cat ./serverlist`; do echo -----$i-----; ssh $i 'id'; done   这句话可以容易实现对储存在一个文件中的机器列表进行遍历,在expect中要如何才能实现呢?
请指教。

论坛徽章:
0
10 [报告]
发表于 2007-04-12 16:31 |只看该作者
有没有人帮忙回复一下,多谢先。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP