免费注册 查看新帖 |

Chinaunix

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

[系统管理] 这样的脚本如何正确执行。或者如何修改一下 [复制链接]

论坛徽章:
3
天秤座
日期:2014-10-29 11:37:572015元宵节徽章
日期:2015-03-06 15:50:39NBA常规赛纪念章
日期:2015-05-04 22:32:03
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-03-04 10:56 |只看该作者 |倒序浏览
本帖最后由 tomer 于 2013-03-04 11:11 编辑

  1. ssh 192.168.7.212
  2. expect {
  3.           "yes/no" { send "yes\r";exp_continue}
  4.           "password:" {send "abc123\r";exp_continue}
  5.   }
复制代码
目的,想让程序自动输入yes 和 abc123

知道答案了:

  1. #!/usr/bin/expect -f
  2. spawn ssh 192.168.7.212
  3. expect {
  4.           "yes/no" { send "yes\r";exp_continue}
  5.           "password:" {send "abc123\r";exp_continue}
  6.   }
  7. interact
复制代码

论坛徽章:
0
2 [报告]
发表于 2013-03-04 11:26 |只看该作者
自力更生了。

论坛徽章:
3
天秤座
日期:2014-10-29 11:37:572015元宵节徽章
日期:2015-03-06 15:50:39NBA常规赛纪念章
日期:2015-05-04 22:32:03
3 [报告]
发表于 2013-03-04 11:36 |只看该作者
本帖最后由 tomer 于 2013-03-04 11:45 编辑

但是写成这样的就不知道怎么改了:

#!/usr/bin/expect -f
for ip in `ip.list`
di
spawn ssh $ip
expect {
          "yes/no" { send "yes\r";exp_continue}
          "password:" {send "zcxc123\r";exp_continue}
  }
exit
done
interact

论坛徽章:
3
天秤座
日期:2014-10-29 11:37:572015元宵节徽章
日期:2015-03-06 15:50:39NBA常规赛纪念章
日期:2015-05-04 22:32:03
4 [报告]
发表于 2013-03-04 13:06 |只看该作者
谁能帮搞一下啊

论坛徽章:
93
2015年辞旧岁徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2019-10-10 10:55:38季节之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季节之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
5 [报告]
发表于 2013-03-04 13:34 |只看该作者
回复 3# tomer


    你这 iplist 有很多 IP 吗?可是你这 for 里弄了一个 exit 是啥想法呢?

论坛徽章:
3
天秤座
日期:2014-10-29 11:37:572015元宵节徽章
日期:2015-03-06 15:50:39NBA常规赛纪念章
日期:2015-05-04 22:32:03
6 [报告]
发表于 2013-03-04 13:40 |只看该作者
因为前面登别的机器里了,所以让他退出来,执行登录下一台机器

论坛徽章:
93
2015年辞旧岁徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2019-10-10 10:55:38季节之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季节之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
7 [报告]
发表于 2013-03-04 15:14 |只看该作者
回复 6# tomer


    那个exit不就导致你的脚本退出了吗。

这个试试,剩下的你改改满足你的需求吧,我就半桶水,帮不上什么忙,不过至少发出来的东西会测试一下。你那脚本怎么看也不是可以运行的脚本:
  1. #!/usr/bin/expect -f

  2. set f [open xx.txt r]

  3. while {[gets $f ip] >= 0} {
  4.     spawn ssh 用户名@$ip
  5.     expect {
  6.         "yes/no"   { send "yes\r";exp_continue}
  7.         "assword:" { send "密码\r"; exp_continue; }
  8.         -re "(#|$) $"  { send "exit\r" }
  9.     }
  10. }
复制代码

论坛徽章:
3
天秤座
日期:2014-10-29 11:37:572015元宵节徽章
日期:2015-03-06 15:50:39NBA常规赛纪念章
日期:2015-05-04 22:32:03
8 [报告]
发表于 2013-03-04 15:52 |只看该作者
本帖最后由 tomer 于 2013-03-04 16:28 编辑

回复 7# seesea2517


    恩。这个脚本可以每台都进去,再出来。,
我还想加的内容:进去每台机器后执行两条命令:,如何加进去
ssh-keygen -t rsa  &>/dev/null  
                                                
cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys &> /dev/null  



-bash-3.2$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/oracle/.ssh/id_rsa): <--需要回车
/home/oracle/.ssh/id_rsa already exists.
Overwrite (y/n)? y <--需要敲y
Enter passphrase (empty for no passphrase):
Enter same passphrase again: <--需要回车
Your identification has been saved in /home/oracle/.ssh/id_rsa.
Your public key has been saved in /home/oracle/.ssh/id_rsa.pub.
The key fingerprint is:
97:ad:3c:7e:45:6a:57:df:78:a3:8b:d4:59:f3:b9:15 oracle@localhost.com
-bash-3.2$

论坛徽章:
93
2015年辞旧岁徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2019-10-10 10:55:38季节之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季节之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
9 [报告]
发表于 2013-03-04 16:36 |只看该作者
用ssh的参数:
spawn ssh 用户名@$ip command

或者:
-re "(#|$) $"  { send "command1 ; command ; exit\r" }

注:已无力测试。

论坛徽章:
93
2015年辞旧岁徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2019-10-10 10:55:38季节之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季节之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
10 [报告]
发表于 2013-03-04 16:38 |只看该作者
回复 8# tomer


    看上去还有不少需要修改的地方,你在 expect 的匹配里多加几个条目就行了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP