ssh執行遠端指令碼遇到的坑
ssh連線遠端主機執行指令碼的環境變數問題
ssh 這個方式使用的是bash的non-login + non-interactive模式。是不會讀取/etc/profile中的配置,但bash 會判斷標準輸入是否關聯到 sshd 這樣的網路鏈結上,如果是,會讀取 ~/.bashrc 配置檔案
* xcall 呼叫命令
> 例:xcall jps
```shell
#!/bin/bash
params=$@
i=100
for (( i=100 ; i <= 104 ; i = $i + 1 )) ; do
echo **********=== hadoop$i $params **********===
ssh hadoop$i "source /etc/profile;$params"
done
例:xsync /opt/module
#!/bin/bash
#1 獲取輸入引數個數,如果沒有引數,直接退出
pcount=$#
if((pcount==0))
;then
echo no args;
exit;fi
#2 獲取檔名稱
p1=$1
fname=
`basename $p1`
echo fname=
$fname
#3 獲取上級目錄到絕對路徑
pdir=
`cd -p $(dirname $p1)
;pwd
`echo pdir=
$pdir
#4 獲取當前使用者名稱
user=
`whoami
`#5 迴圈
for((host=
100; host<
105; host++));
doecho ------------------- hadoop$host --------------
rsync -rvl $pdir/$fname
$user@hadoop
$host
:$pdir
done
例:zk restart
#!/bin/bash
case
$1in
"start");
;"restart");
;"stop");
;esac
例:kk start
#!/bin/bash
case
$1in
"start");
;"stop");
;esac
Hadoop ZK群起指令碼
bin bash for i in hadoop01 hadoop02 hadoop03 do echo i ssh i opt software jdk1.8.0 171 bin jps done bin bash echo 開始啟動所有節點服務 echo 正在啟動zookeeper for i ...
zookeeper集群群起指令碼
前提條件 每個節點的zookeeper配置檔案都寫好 在datadir目錄下有myid檔案 最好是已經配置好ssh免密登入。然後就可以啟動了,如果我們機器很多的話,不可能一台一台的啟動。所以要寫個指令碼,我的主機名是有規律的hadoop101 hadoop102 hadoop103 所以建立指令碼的...
群起hadoop集群指令碼(開啟,關閉)
通過執行shell指令碼語句,實現群起hadoop集群 1.start.sh bin bash echo 正在開啟集群服務 echo 正在開啟namenode節點 ssh admin hadoop senior01.itguigu.com opt modules hadoop 2.5.0 cdh5....