本帖最后由 Eisen 于 2017-06-19 17:31 编辑
请教各位高手,
我现在有一组Linux数据库服务器,上面已经配置了SSH信任。用命令 ssh hostname 'su - sybase -c "/sybase/data/reboot.sh"'可以执行正确,于是我想把这个扩展到一组服务器上。写了一个nodelist文本文件
cat nodelist 10.117.31.25 10.117.31.26 10.117.31.27 然后我写一个远程重启Sybase IQ的bash – reboot_all.sh
#!/bin/bash while read NODE do { ssh ${NODE} ‘su – sybase -c“/sybase/data/reboot.sh” ’ }done < nodelist
但是我发现执行这个reboot_all.sh,只能重启nodelist里第一个node,而那个ssh执行完了就退出整个script,nodelist后面的node都不会继续读并执行循环体了。
除非我把reboot_all.sh写成后台执行--
#!/bin/bash while read NODE do { ssh ${NODE} ‘su – sybase -c“/sybase/data/reboot.sh” ’ }& done < nodelist
但是,这一组服务器的数据库重启是有时间先后依赖性的,所以必须严格根据那个nodelist里的顺序依次执行下来,也就是说--完全同步的 &方式不行。
请教各位,有什么方法可以在Bash的循环体中依次调用ssh吗? 谢谢
|