指定一臺主機作為信任主機,這樣從這臺主機登錄其他機器就不需要密碼了。
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:域名與空間、雅安服務器托管、營銷軟件、網站建設、通道網站維護、網站推廣。
設置信任主機:
假設有四臺機器:192.168.2.1~192.168.2.4,其中192.168.2.1為信任機,那么在192.168.2.1上運行如下命令:
$ssh-keygen -t rsa //此處一路回車,生成秘鑰
$scp .ssh/id_rsa.pub 192.168.2.2:~/ //把秘鑰拷貝到其他遠程機器
$ssh 192.168.2.2 ‘cat id_rsa.pub .ssh/authorized_keys’ //(遠程執(zhí)行命令)在遠程機器上生成認證文件
經過這幾步,從192.168.2.1 ssh登陸192.168.2.2時,就不會再需要輸入密碼了。同樣的步驟再執(zhí)行3、4的極其。
文本文件hostlist可以如下
192.168.2.2
192.168.2.3
192.168.2.4
#!/bin/shdoCommand(){? ??
hosts=`sed -n'/^[^#]/p'hostlist`
for ? host ?in ? $hosts
do
echo ""
echo ?HOST$host
ssh ?$host ?"$@"?
done
return 0
}
if ?[ ?$# -lt 1 ]
then
echo "$0cmd" exit?
fi
do ?Command "$@"
echo "return from doCommand"
執(zhí)行命令(記得先對doCommand.s
h增加執(zhí)行權限 chmod u+x doCommand.sh)
./doCommand.sh “l(fā)s -al /root/”
這樣該腳本就會在每臺機器上執(zhí)行”ls -al /root/”這個命令,并返回結果在信任主機上。
一次執(zhí)行多個命令可以將多個命令用英文分號分割,比如像這樣:
mkdir /tmp/mydir; touch /tmp/mydir/myfile
其實這樣也不能算是同時執(zhí)行,Linux的命令是順序執(zhí)行的,就算是shell腳本,里面寫了一大堆命令,同樣也順序執(zhí)行的。如果前一個命令執(zhí)行的時間比較長,后面的命令就只有等待了。如果命令執(zhí)行時間比較長,又想讓命令同時執(zhí)行,恐怕只能打開多個虛擬終端才行(右鍵虛擬終端界面,選擇“打開標簽”),打開多個登錄的虛擬終端其實是運行了多個“會話”,多個“會話”中的命令才是“同時”執(zhí)行。
??在crontab定時任務中,一般都是多個語句組成一個shell script,定時執(zhí)行,這就存在了語句執(zhí)行邏輯問題。
??有時候單純是按一定順序執(zhí)行,有時候需要按一定邏輯執(zhí)行(通過回傳值來完成)。
ansible lv -a 'df -h free -h '
報錯
10.255.177.180 | FAILED | rc=1
df: ‘’: No such file or directory
df: ‘free’: No such file or directorynon-zero return code
10.255.177.183 | FAILED | rc=1
需要修改為:
ansible lv -m shell -a 'df -h free -h '
命令中間加符號 例如 make make install 代表前面的命令執(zhí)行完畢在執(zhí)行后面的
還有加管道符號 rpm -qa | wc -l 代表把前面命令執(zhí)行結果作為后面命令的輸入
連續(xù)不中斷執(zhí)行
用;可以讓多個命令連續(xù)知行,中間出現錯誤并不會中斷后面命令,如
雖然第二條指令會報錯,但是不會影響后面的指令,最后test目錄不存在
出錯停止后面指令
用分割的命令,如果沒有錯誤會一直執(zhí)行下去,出現錯誤立即中止,如
這回在第二個指令處就中止了
一次正確即停止
用||分割的命令,如果有錯誤就一直執(zhí)行下去,直到一次正確立即中止,如
第一次執(zhí)行第一條指令就正確,后面的不執(zhí)行
第二次執(zhí)行前兩條都錯誤,直到最后一條才正確,最后一條不再執(zhí)行