免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 7847 | 回复: 10

[系统管理] 请教如何在Bash里调用ssh远程执行命令 [复制链接]

论坛徽章:
7
数据库技术版块每日发帖之星
日期:2015-08-09 06:20:00数据库技术版块每日发帖之星
日期:2015-11-03 06:20:00数据库技术版块每日发帖之星
日期:2016-02-20 06:20:00数据库技术版块每日发帖之星
日期:2016-07-13 06:20:00数据库技术版块每日发帖之星
日期:2016-07-31 06:20:00数据库技术版块每日发帖之星
日期:2016-08-01 06:20:00数据库技术版块每日发帖之星
日期:2016-08-18 06:20:00
发表于 2017-06-19 17:29 |显示全部楼层
本帖最后由 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 IQbash – 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吗? 谢谢




论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
发表于 2017-06-19 17:48 |显示全部楼层
ssh -n ${NODE} ‘su – sybase -c“/sybase/data/reboot.sh” ’

加个 -n 参数

论坛徽章:
10
15-16赛季CBA联赛之同曦
日期:2016-06-11 19:22:4115-16赛季CBA联赛之深圳
日期:2020-05-31 16:13:5615-16赛季CBA联赛之同曦
日期:2020-01-28 12:42:47每日论坛发贴之星
日期:2016-08-09 06:20:00程序设计版块每日发帖之星
日期:2016-08-09 06:20:00每日论坛发贴之星
日期:2016-07-12 06:20:00程序设计版块每日发帖之星
日期:2016-07-12 06:20:00程序设计版块每日发帖之星
日期:2016-07-06 06:20:00程序设计版块每日发帖之星
日期:2016-07-04 06:20:0015-16赛季CBA联赛之佛山
日期:2021-02-26 09:33:41
发表于 2017-06-19 21:35 |显示全部楼层
顶楼上
     -n      Redirects stdin from /dev/null (actually, prevents reading from
             stdin).  This must be used when ssh is run in the background.  A
             common trick is to use this to run X11 programs on a remote
             machine.  For example, ssh -n shadows.cs.hut.fi emacs & will
             start an emacs on shadows.cs.hut.fi, and the X11 connection will
             be automatically forwarded over an encrypted channel.  The ssh
             program will be put in the background.  (This does not work if
             ssh needs to ask for a password or passphrase; see also the -f
             option.)

论坛徽章:
7
数据库技术版块每日发帖之星
日期:2015-08-09 06:20:00数据库技术版块每日发帖之星
日期:2015-11-03 06:20:00数据库技术版块每日发帖之星
日期:2016-02-20 06:20:00数据库技术版块每日发帖之星
日期:2016-07-13 06:20:00数据库技术版块每日发帖之星
日期:2016-07-31 06:20:00数据库技术版块每日发帖之星
日期:2016-08-01 06:20:00数据库技术版块每日发帖之星
日期:2016-08-18 06:20:00
发表于 2017-06-20 10:36 |显示全部楼层
十分感谢各位的帮忙

论坛徽章:
0
发表于 2017-06-20 14:59 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
发表于 2017-06-20 18:16 |显示全部楼层
本帖最后由 关阴月飞 于 2017-06-20 18:21 编辑

我来讨论了,我不太懂powershell,但在我看来powershell的语法比较屎。

#!/bin/bash
while read NODE
do
    ssh  -n  ${NODE} ‘su – sybase -c“/sybase/data/reboot.sh” ’
done < <(grep . nodelist)


以上代码只要没有输出就是好消息,当然了,需要注意的地方是,文本可以有空行,有空行脚本中不需要做任何判断处理。


我的结论是:
bash 语法比powershell 要好,要简单。完全支持原有linux命令和管道,从兼容程度来讲,微软官方都要支持原生bash了,兼容程度不知道是多少。


问:目前哪些版本linux能安装上powershell?
答:我TM脑子进水了吧,好好的linux, 装什么powershell呀!

论坛徽章:
0
发表于 2017-06-21 14:45 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
发表于 2017-06-21 20:58 |显示全部楼层
这么高大尚的事情,推荐用ansible来完成。

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
发表于 2017-06-22 08:55 |显示全部楼层
回复 6# 关阴月飞


兄弟,不要浪费这个时间。

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
发表于 2017-06-22 10:22 |显示全部楼层
本帖最后由 jason680 于 2017-06-22 10:23 编辑

回复 7# 本友会机友会摄友会

http://baike.baidu.com/item/wsl/20359185


这不你PS的场
这bash中超过90%的
ps就你一人不足1%(可能0.1%都不足...)

这些解决方案/程序/脚本,直接拿来使才是道...
难不成还改写成PS

事实告诉我们的bash胜出到那都有...(含windows10)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP