您的位置:首页 > 理论基础

shell脚本关闭计算机集群

2016-08-14 20:42 966 查看
背景:由于用4台机器建立了一个Hadoop集群,每次开机还好,直接按4台,但是每次关机就比较麻烦(不想直接长按电源鍵),因为目前只有一台机器有显示器,另外三台都没有显示器,所以,每次关闭其他三台时,都需要在终端下用ssh连接到host,然后再输入关机命令,现在三台机器,稍微还好一些,如果机器再多几台,那就太麻烦了,因此,专门写了一个脚本来自动关机。

#!/usr/bin/env bash

ssh -t node1 "echo \"hadoop\" | sudo -S shutdown -h now"
ssh -t node2 "echo \"hadoop\" | sudo -S shutdown -h now"
ssh -t node3 "echo \"hadoop\" | sudo -S shutdown -h now"


关机脚本代码如上,node1,node2,node3表示三台机器,ssh后面跟了一个-t,表示以一个伪终端的方式连接远程机器,并执行后续的命令。man ssh 时,-t的解释如下:

-t      Force pseudo-terminal allocation.  This can be used to execute
arbitrary screen-based programs on a remote machine, which can be
very useful, e.g. when implementing menu services.  Multiple -t
options force tty allocation, even if ssh has no local tty.


因为在sudo的时候,需要输入用户密码,所以,在sudo的时候,带了一个配置项-S,通过man sudo ,可以发现:

S, --stdin
Write the prompt to the standard error and read the password
from the standard input instead of using the terminal device.
The password must be followed by a newline character.


也就是说,加了这个参数后,可以从标准输入读取密码,因此,在sudo之前输出密码即可,从而,实现在sudo的时候,不需要手动输入密码。以上hadoop就是密码。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  shell ssh