Linux
如何獲取 ssh awk 遠端值
我正在使用這個腳本
[test@sys-master ~]$ parallel -k -j 100 sshpass -p test1213'!' ssh -oStrictHostKeyChecking=no -oCheckHostIP=no -q root@10.0.{} "cat /proc/loadavg | awk -F \" \" '{ print a,\$1,b }' a="'"$(hostname)"'" b=\$(nproc)" ::: {41..46}.{1..100}
為什麼要返回本地值?我需要遠端(節點)值
sys-master 9.87 24 sys-master 9.99 24 sys-master 11.85 24 sys-master 11.67 24 sys-master 10.75 24 sys-master 8.00 24 sys-master 10.27 24 sys-master 11.94 24 sys-master 10.28 24 sys-master 10.94 24 sys-master 12.02 24 sys-master 9.55 24 sys-master 11.43 2
這是由於引用。
GNU Parallel 不是 shell 的一部分,因此如果 shell 解釋每個輸入,則必須引用它。並且由於您從 shell 呼叫 GNU Parallel(它將解釋輸入)並且 GNU Parallel 啟動一個 shell(解釋輸入)它必須被引用兩次,除非您使用
-q
,您只能在需要完整行時使用它被引用(即沒有組合命令)。正如您可以說的那樣,它很快就會變得混亂。:)
所以一般建議是定義一個 bash 函式並呼叫它。
myloadavg() { sshpass -p test1213'!' ssh -oStrictHostKeyChecking=no -oCheckHostIP=no -q root@10.0.$1 "cat /proc/loadavg | awk -F \" \" '{ print a,\$1,b }' a="'"\$(hostname)"'" b=\$(nproc)" } export -f myloadavg parallel myloadavg ::: {41..46}.{1..100}