免费注册 查看新帖 |

Chinaunix

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

求大神的脚本---实现ssh登录到其他节点,在其他执行完命令,然后将结果保存在本地主机 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-04-14 18:57 |只看该作者 |倒序浏览
比如有3个主机,STP1,STP2和STP3.

我每天都需要分别从A登录到B或是C,执行相关的命令来检查系统的状态.

是否能用脚本在A上自动登录到B或是C呢,然后将在B和C上执行的结果重定向到A主机的某个文件里?

关键的问题是每次从stp1登录到stp2或是3的时候都需要手工输入密码,如果才能将root用户的密码自动送过去输入呢?

#!/bin/sh
for i in stp2 stp3
do
(exit) | ssh $i

df -k >> stp1:/var/tmp/HealthCheck.log  --- 》这里想实现的是分别将stp2或是stp3上的df -k命令的结果自动定向到stp1的/var/tmp/HealthCheck.log文件里面
done

论坛徽章:
0
2 [报告]
发表于 2011-04-14 19:02 |只看该作者
看到有这样的用法,将密码作为参数之一在脚本里面写好传送过去,这样就不用手工输入密码了,但是不知道如何用,看不懂。
$ssh->login([ $user [, $password [, $suppress_shell ] ] ])

论坛徽章:
0
3 [报告]
发表于 2011-04-15 14:16 |只看该作者
perl的Net:SSH模块或者ssh-kegen实现公钥认证

论坛徽章:
0
4 [报告]
发表于 2011-04-15 14:24 |只看该作者
用expect很方便的
Passwd 可以在函数外面定义一下
SSH () {
  Server=$1
  Comm=$2
  expect<<eof
    set timeout 10
        spawn ssh -t "$Server" "$Comm"
                expect {
                    "not know" {send_user "[exec echo \"not knowServer\"]";exit}
                    "(yes/no)?"    {send "yes\r";exp_continue}
                    "password:"     {send "[exec echo $Passwd]\r";exp_continue}
                    "ermission denied, please try again." {
                        send_user "[exec echo \"Errorassword is wrongServer\"]"
                        exit
                }

            }

eof
}

论坛徽章:
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
5 [报告]
发表于 2011-04-15 15:34 |只看该作者
pexpect也可以,自动交互的。

论坛徽章:
0
6 [报告]
发表于 2011-04-15 16:47 |只看该作者
请那位大神能提供一个具体的脚本啊.

论坛徽章:
0
7 [报告]
发表于 2011-04-15 16:51 |只看该作者
回复 6# youlingbohaozhe

把四楼的脚本修改一下就可以用呀。

论坛徽章:
0
8 [报告]
发表于 2011-04-15 23:20 |只看该作者
  1. expect {
  2.         "(yes/no)" {
  3.                 send "yes\r"
  4.                 exp_continue;
  5.         }
  6.         "password" {
  7.                 send "1234\r"
  8.                 exp_continue;
  9.         }
  10.         "timed out" {
  11.                 sleep 20
复制代码

论坛徽章:
0
9 [报告]
发表于 2011-04-16 11:15 |只看该作者
加上log_file 参数就可以保留相关信息到本地了。

论坛徽章:
0
10 [报告]
发表于 2011-04-16 11:25 |只看该作者
回复 8# keke00


    少了两个 }
   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP