在 Linux 或 FreeBSD 系統底下,如何下達 command 來達到多方控管機器,在網路上找到 Fanout and fanterm 這兩套軟體,可以實現我想要的目的,在 FreeBSD 有把 sysutils/fanout 進到 ports 裡面,安裝方式很簡單,就直接 make install clean 就可以了,用法也很簡易:
Usage: /usr/local/bin/fanout "MACHINES" "commands and parameters to run on each machine" /usr/local/bin/fanout -h #Show this help /usr/local/bin/fanout --noping # Do not ping before running command當然事情沒有這麼簡單,因為是透過 SSH 方式去對其他機器下 command,所以作者都把預設 port 設定成 22,沒有完整考慮到其他環境,管理重要的 Server 怎麼會設定 22 阿,一定會改掉的阿,後來檢查一下 /usr/local/bin/fanout 這隻程式,並非編譯過的 binary 檔案,所以打開來看,就是利用 bash shell script 所寫的程式,網路上 Google 也找到一篇
Does anyone know how to specify a ssh port number with fanout? 文章,但是最後我是自己把 bash 改成支援可調整 port,也就是 MACHINES 可以放入:ip:portt or hostname:port patch 檔案:需要的就拿去 patch 就可以用了
--- /usr/local/bin/fanout 2010-01-08 15:06:47.000000000 +0800
+++ fanout 2010-01-08 15:00:04.000000000 +0800
@@ -53,13 +53,22 @@
STARTTIME=`date`
for ONETARGET in $TARGETS ; do
case $ONETARGET in
- *@*) #user@machine form
+ *@*) #user@machine:port form
ONEUSER="-l ${ONETARGET%%@*}"
- ONEMACH=${ONETARGET##*@}
- HEADER="==== As ${ONETARGET%%@*} on $ONEMACH ===="
+ SERVER=${ONETARGET##*@}
+ HOST=`echo $SERVER | awk -F: '{ printf $1 }'`
+ PORT=`echo $SERVER | awk -F: '{ printf $2 }'`
+ if [ "$PORT" != "" ]; then
+ ONEPORT="-p ${PORT}"
+ else
+ ONEPORT=""
+ fi
+ ONEMACH=${HOST}
+ HEADER="==== As ${ONEUSER} on $ONEMACH port: ${PORT}===="
;;
*) #just machine form
ONEUSER=""
+ ONEPORT=""
ONEMACH=$ONETARGET
HEADER="==== On $ONEMACH ===="
;;
@@ -74,7 +83,7 @@
if [ "$PING" = "NO" ] || ping -c 3 $ONEMACH >/dev/null 2>/dev/null ; then
echo Starting $ONETARGET >/dev/stderr #Machine is reachable
#Show machine name header, show command output, indented two spaces, save all to a temp file.
- ( echo $HEADER ; ssh -n $ONEUSER $ONEMACH "$*" | sed -e 's/^/ /' ; echo ) >$TMPFILE &
+ ( echo $HEADER ; ssh $ONEPORT -n $ONEUSER $ONEMACH "$*" | sed -e 's/^/ /' ; echo ) >$TMPFILE &
else
echo $ONETARGET unavailable >/dev/stderr #Machine not responding
echo $HEADER ; echo "==== Machine unreachable by ping" ; echo >$TMPFILESee also
- OpenSSH 安全性漏洞 CVE-2016-0777 and CVE-2016-0778
- 安裝 XCache 加速 PHP 執行速度
- 好用 PHP debug extension Xdebug on FreeBSD 安裝
- [FreeBSD] 利用 fsck 指令修復不正常斷電關機
- ProFTPD UseEncoding 繁體中文亂碼解決 Localization
- [FreeBSD] update apache -> 2.2.15, PHP -> 5.3.2, and MySQL downgrade to 5.1.9
- Apache 取得透過 Reverse Proxy (Varnish) 的 Client 真正 IP (mod_rpaf)
- [Vim] 想套用 *.php syntax 顏色於 *.ros
- [FreeBSD] DenyHosts 設定在 hosts.allow 注意事項
- [UNIX] Vim 命令圖解說明