使用shell, ssh进行集群管理
2010-11-14 16:40
681 查看
在while和for循环中使用ssh
关键字: while, for, ssh我在while循环中使用ssh,但ssh完第一行后就退出了,使用了exec, & 等命令均不行,后来看到这篇文章的解释,才明白。
转载来自:http://blog.csdn.net/shrekmu/archive/2008/06/05/2513177.aspx,以示提醒备份。
转载如下:
最近在写一个自动更新的shell,可是发现如果在使用while循环从一个文件中读取ip地址,然后访问就只能读取第一行纪录。代码如下:
while read LINE
do
echo *******************************************$LINE
ssh 192.168.10.233 ls
done < data
但是如果使用for就没有这个问题,非常的奇怪,for的代码如下:
for LINE in `cat data`
do
echo *******************************************$LINE
ssh 192.168.10.233 ls
done
难道for和while竟然有这么大的差别,不可能吧。经过一番试验以后发现,原来并不是while的for的差别,而是while中使用重定向机
制,data文件中的信息都已经读入并重定向给了整个while语句。所以当我们在while循环中再一次调用read语句,就会读取到下一条记录。问题
就出在这里,ssh语句正好回读取输入中的所有东西,下面这个shell能很好的说明这个问题:
while read LINE
do
echo *******************************************$LINE
ssh 192.168.10.233 cat
done < data
执行这个shell就会发现,ssh中的cat语句会打印出data文件中的其他纪录,这就导致调用玩ssh语句后,输入缓存中已经都被读完了,当read语句再读的时候当然也就读不到纪录,循环也就退出了。改进方法是,将ssh的输入重定向输入:
while read LINE
do
echo *******************************************$LINE
ssh 192.168.10.233 ls < /dev/null
done < data
这样,在while语句中也能顺利的执行ssh语句了。linux的重定向还真复杂。
--------------------------------------------------------------------------------------------------------
在我的集群上:
用ssh更新每台linux机器的用户名XX密码为YY,举例说明:
需要两个文件1 chgpasswd.shell 2. server_list.txt
1. chgpasswd.shell
2. server_list.txt
IP信息或者是主机名均可
在此过程中遇到的问题是windows 下面编辑的shell脚本可能是编码等的原因在Linux下执行出现错误。
相关文章推荐
- 使用配置方式进行ssh的整合以及管理员管理的案例
- 在Google使用Borg进行大规模集群的管理 5-6
- 使用 Shell 脚本进行 Hadoop Spark 集群的批量安装
- 使用shell 脚本进行系统管理
- Linux服务器教程之路2--使用SSH来进行远程管理
- java使用ssh调用shell命令获取KVM数据(KVM需要通过libvirt管理)
- java使用ssh调用shell命令获取KVM数据(KVM需要通过libvirt管理)(二)
- 使用ssh做Linux集群安全管理
- 使用配置方式进行ssh的整合以及管理员管理的案例(二)
- Hadoop-Linux集群批量部署管理工具parallel-ssh(PSSH)的安装与使用
- 利用saltstack的salt-ssh进行集群管理【无客户端下】 推荐
- github使用(通过webstorm创建一个nodejs项目的本地git库,推送到github进行管理,(ssh密钥无用户密码方式))
- 系统管理工具包: 使用 SSH 进行分布式管理
- 在Google使用Borg进行大规模集群的管理 7-8
- zookeeper学习-3(如何使用zookeeper进行集群管理-java版本)
- 在Google使用Borg进行大规模集群的管理 3-4
- 系统管理工具包: 使用 SSH 进行分布式管理
- 使用shell生成七牛的管理凭证并进行刷新
- 使用Ruby编写脚本进行系统管理的教程
- javaweb学习总结——使用Cookie进行会话管理