免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 无敌zzt
打印 上一主题 下一主题

[文本处理] 用expect脚本自动登录交换机,放开机启动项中无法执行 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2014-06-26 11:15 来自手机 |只看该作者
试过了,还是没解决

论坛徽章:
0
12 [报告]
发表于 2014-06-26 11:36 |只看该作者
网络问题排除了没。

论坛徽章:
5
金牛座
日期:2013-10-14 14:40:422015年亚洲杯之伊朗
日期:2015-03-26 10:37:012015亚冠之浦和红钻
日期:2015-10-12 17:47:4115-16赛季CBA联赛之山东
日期:2016-01-20 16:43:1215-16赛季CBA联赛之辽宁
日期:2016-03-29 16:43:59
13 [报告]
发表于 2014-06-26 12:19 |只看该作者
我是suse linux ,我这边文件是boot.local ,我看启动记录上显示的是boot.local执行在network服务启动前了。
你可以在启动日志(我这里是/var/log/boot.omsg)里搜下你的脚本名称,然后看看他是在network服务启动前还是启动后

论坛徽章:
0
14 [报告]
发表于 2014-06-26 14:11 来自手机 |只看该作者
不对吧,rc.local是在程序启动的最后一步执行的。我的系统是red hat,启动日志在/var/log/messages中,rc.local执行的内容是在最后的

论坛徽章:
0
15 [报告]
发表于 2014-06-26 14:15 来自手机 |只看该作者
开机后,交换机的IP是可以ping通的,但接受命令执行到那个脚本时不行

论坛徽章:
5
金牛座
日期:2013-10-14 14:40:422015年亚洲杯之伊朗
日期:2015-03-26 10:37:012015亚冠之浦和红钻
日期:2015-10-12 17:47:4115-16赛季CBA联赛之山东
日期:2016-01-20 16:43:1215-16赛季CBA联赛之辽宁
日期:2016-03-29 16:43:59
16 [报告]
发表于 2014-06-26 14:40 |只看该作者
那就不清楚你这是什么问题了,我在suse测试是可以的

SLES11_SP3:~/temp # cat t.sh
#!/usr/bin/expect -f
spawn ssh 192.168.10.20

expect "*Password:*"
send "suse\r"

expect "#"
send "ifconfig\r"

expect "#"
send "exit\r"
expect eof
SLES11_SP3:~/temp # cat /etc/init.d/after.local
/root/temp/t.sh >>/root/temp/tsh.log
SLES11_SP3:~/temp # cat tsh.log
spawn ssh 192.168.10.20
Password:
Last login: Tue Apr  1 03:08:52 2014 from 192.168.10.30
SP2_11:~ # ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:B5:02:AC  
          inet addr:192.168.10.20  Bcast:192.168.10.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:feb5:2ac/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:61415 errors:0 dropped:0 overruns:0 frame:0
          TX packets:9814 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:77147838 (73.5 Mb)  TX bytes:1176763 (1.1 Mb)

eth0:0    Link encap:Ethernet  HWaddr 00:0C:29:B5:02:AC  
          inet addr:192.168.10.26  Bcast:192.168.10.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:236 errors:0 dropped:0 overruns:0 frame:0
          TX packets:236 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:19706 (19.2 Kb)  TX bytes:19706 (19.2 Kb)

SP2_11:~ # exit
logout
Connection to 192.168.10.20 closed.
SLES11_SP3:~/temp #

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00综合交流区版块每日发帖之星
日期:2015-10-14 06:20:00IT运维版块每日发帖之星
日期:2015-10-25 06:20:00IT运维版块每日发帖之星
日期:2015-11-06 06:20:00IT运维版块每日发帖之星
日期:2015-12-10 06:20:00平安夜徽章
日期:2015-12-26 00:06:302016猴年福章徽章
日期:2016-02-18 15:30:34IT运维版块每日发帖之星
日期:2016-04-15 06:20:00IT运维版块每日发帖之星
日期:2016-05-21 06:20:00综合交流区版块每日发帖之星
日期:2016-08-16 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-14 06:20:00
17 [报告]
发表于 2014-06-26 14:57 |只看该作者
网络问题吧,你可以在rc.local加点log,把log重定向看看。

论坛徽章:
0
18 [报告]
发表于 2014-06-26 14:58 |只看该作者
回复 14# 无敌zzt

有客人来后,我会给他泡茶,顺序如下:
烧水、洗杯子、放茶叶、倒水。
倒水是最后执行的,但执行的时候烧水未必已经执行完毕了,所以可能会出现倒水失败的情况。

静态IP还好些,要是默认的DHCP,启动网络等待个半分钟也不算太稀奇。
可以在rc.local里写个小脚本来调这个expect,譬如

  1. while sleep 1
  2. do
  3.     ping && break
  4. done
  5. /path/to/expect/script
复制代码

论坛徽章:
0
19 [报告]
发表于 2014-06-26 21:03 |只看该作者
回复 16# itfly3


   问题已解决,感谢热心回复,脚本单独放开机启动中时,确实跟network service有关

论坛徽章:
0
20 [报告]
发表于 2014-06-26 21:09 |只看该作者
回复 18# 用户名注册后不能更改


   大神果然牛逼,将脚本单独放开机启动时,如果等待一段时间启动,确实能正常执行啦;   另外expect脚本也需修改,不知道为啥,将expect脚本放开机启动后, expect "*Username:*" 改为  expect "*"时, 才能正确匹配;
   这也是为什么脚本在c程序中无法正确执行的原因。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP