sh/bash/dash/ksh/zsh等Shell脚本
-
qq1100970
- 帖子: 7
- 注册时间: 2010-11-23 20:15
#1
帖子
由 qq1100970 » 2010-11-23 20:19
程序运行后,自动登陆127.0.0.1系统,成功后屏幕输出“Hello!this is ***”。
接着向某个网站发送Ping包,满足:发送时间从键盘输入,数据包长度从键盘输入,ping的目的地址由键盘输入;
要有出错处理!如输入的时间、数据包长度,目的地址正确性检查。
那个我连第一个的脚本都没写好,没错误,但是显示不了那句话...

,求解啊
-
eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
#2
帖子
由 eexpress » 2010-11-24 10:21
#!/usr/local/bin/expect
set f [open ur_ip_passwd_file r]
set timeout 150
while {[gets $f line] >= 0} {
spawn ssh [lindex $line 0]
expect "user: "
sleep .1
send "root\r"
expect "assword: "
send "[lindex $line 0]\r"
expect -re {[$#] }
send "shutdown\r"
expect eof
close
}
close $f
● 鸣学
-
qq1100970
- 帖子: 7
- 注册时间: 2010-11-23 20:15
#3
帖子
由 qq1100970 » 2010-11-24 18:38
2l,那个我不打算用ssh,那个比较喜欢用telnet,虽然没啥安全性。。。

-
eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
#4
帖子
由 eexpress » 2010-11-25 9:18
自己看man
基本就是expect,然后send嘛。
● 鸣学
-
qq1100970
- 帖子: 7
- 注册时间: 2010-11-23 20:15
#5
帖子
由 qq1100970 » 2010-11-25 11:03
那个telnet代码写好了,但是自动登录后,后续代码就不会被执行。。。。

-
chengmoYS
- 帖子: 125
- 注册时间: 2007-10-22 22:40
#6
帖子
由 chengmoYS » 2010-11-25 18:18
qq1100970 写了:程序运行后,自动登陆127.0.0.1系统,成功后屏幕输出“Hello!this is ***”。
接着向某个网站发送Ping包,满足:发送时间从键盘输入,数据包长度从键盘输入,ping的目的地址由键盘输入;
要有出错处理!如输入的时间、数据包长度,目的地址正确性检查。
那个我连第一个的脚本都没写好,没错误,但是显示不了那句话...

,求解啊
这个我可以帮你写。加我qq 21409199。或者msn
[email protected]。
-
chengmoYS
- 帖子: 125
- 注册时间: 2007-10-22 22:40
#7
帖子
由 chengmoYS » 2010-11-25 22:55
程序运行后,你这里是指的所写的expect脚本吗?
另外,自动登录到127.0.0.1系统,我们都知道127.0.0.1即localhost,代表本机的地址,你这里是指本机吗?
再看你的向某个网站的网址发送数据包,即ping这个网站的ip地址,你要求指定3个。第一个是发送时间,你这里的发送时间,是自己指点几点发送数据包吗(是例行性执行,还是偶然性执行,这个牵涉到任务管理)。数据包的长度,和目的地址比较好指定。第二个数据包长度通过ping的-s来指定,这个好解决。第三个通过ping来指定,好解决。
你这里又写到要验证这3个的正确性。 发送时间要符合时间的规范。数据包长度为非负。地址无论是数字形式或者域名形式都必须符合规范。都可以用正则表达式解决。
-
qq1100970
- 帖子: 7
- 注册时间: 2010-11-23 20:15
#8
帖子
由 qq1100970 » 2010-11-26 18:25
chengmoYS 写了:程序运行后,你这里是指的所写的expect脚本吗?
另外,自动登录到127.0.0.1系统,我们都知道127.0.0.1即localhost,代表本机的地址,你这里是指本机吗?
再看你的向某个网站的网址发送数据包,即ping这个网站的ip地址,你要求指定3个。第一个是发送时间,你这里的发送时间,是自己指点几点发送数据包吗(是例行性执行,还是偶然性执行,这个牵涉到任务管理)。数据包的长度,和目的地址比较好指定。第二个数据包长度通过ping的-s来指定,这个好解决。第三个通过ping来指定,好解决。
你这里又写到要验证这3个的正确性。 发送时间要符合时间的规范。数据包长度为非负。地址无论是数字形式或者域名形式都必须符合规范。都可以用正则表达式解决。
现在的问题是,可以登录主机了,但是登录后不会自动执行后续的程序。。。头疼的紧。。。
-
MaskRay
- 帖子: 61
- 注册时间: 2010-04-29 22:00
- 系统: Gentoo Linux ~amd64
-
联系:
#10
帖子
由 MaskRay » 2011-01-02 21:55
#!/usr/bin/expect --
expect_after -re "\n" exp_continue timeout {exit 1}
send_user "timeout: "
expect_user {
-re "(\\d+)\n" {
set to $expect_out(1,string)
}
}
send_user "packetsize: "
expect_user {
-re "(\\d+)\n" {
set packetsize $expect_out(1,string)
}
}
send_user "destination: "
expect_user {
-re "\\d+\\.\\d+\\.\\d+\\.\\d+\n" {
set ip [split [string trimright $expect_out(0,string) \n] .]
for {set i 0} {$i < 4} {incr i} {
if {[lindex $ip $i] < 0 || [lindex $ip $i] >= 256} exp_continue
}
}
}
send_user "ping -W $to -s $packetsize [join $ip .]\n"
exec ping -W $to -s $packetsize [join $ip .]