指定一臺主機作為信任主機,這樣從這臺主機登錄其他機器就不需要密碼了。
你所需要的網(wǎng)站建設(shè)服務(wù),我們均能行業(yè)靠前的水平為你提供.標(biāo)準(zhǔn)是產(chǎn)品質(zhì)量的保證,主要從事成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)、企業(yè)網(wǎng)站建設(shè)、移動網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計、高端網(wǎng)站設(shè)計、網(wǎng)頁制作、做網(wǎng)站、建網(wǎng)站。創(chuàng)新互聯(lián)建站擁有實力堅強的技術(shù)研發(fā)團隊及素養(yǎng)的視覺設(shè)計專才。
設(shè)置信任主機:
假設(shè)有四臺機器: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:~/ //把秘鑰拷貝到其他遠(yuǎn)程機器
$ssh 192.168.2.2 ‘cat id_rsa.pub .ssh/authorized_keys’ //(遠(yuǎn)程執(zhí)行命令)在遠(yuǎn)程機器上生成認(rèn)證文件
經(jīng)過這幾步,從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í)行權(quán)限 chmod u+x doCommand.sh)
./doCommand.sh “l(fā)s -al /root/”
這樣該腳本就會在每臺機器上執(zhí)行”ls -al /root/”這個命令,并返回結(jié)果在信任主機上。
shell中的fi表示一個if語句的結(jié)尾,例如:
if [ command ];then
符合該條件執(zhí)行的語句
elif [ command ];then
符合該條件執(zhí)行的語句
else
符合該條件執(zhí)行的語句
fi
每個if語句都要用fi結(jié)束,而且是每一個if都要對應(yīng)一個fi。
整個if語句用fi閉合起來才算完整,書寫時if和fi要垂直對齊以方便查看。
格式舉例:
if? condition
then
command1
command2
fi
condition是判斷條件,如果 condition 成立(返回“真”),那么 then 后邊的語句將會被執(zhí)行;如果 condition 不成立(返回“假”),那么不會執(zhí)行任何語句。最后必須以fi來閉合,fi 就是 if 倒過來拼寫,即使有多條語句也不需要用{ }包圍起來。
擴展資料
shell if多條件的格式用法介紹
shell 支持任意數(shù)目的分支,當(dāng)分支比較多時,可以使用 if elif else 結(jié)構(gòu),它的格式為:
if? condition1
then
statement1
elif condition2
then
statement2
elif condition3
then
statement3
else
statementn
fi
注意,if 和 elif 后邊都得跟著 then。整條語句的執(zhí)行邏輯為:
如果 condition1 成立,那么就執(zhí)行 if 后邊的 statement1;如果 condition1 不成立,那么繼續(xù)執(zhí)行 elif,判斷 condition2。
如果 condition2 成立,那么就執(zhí)行 statement2;如果 condition2 不成立,那么繼續(xù)執(zhí)行后邊的 elif,判斷 condition3。
如果 condition3 成立,那么就執(zhí)行 statement3;如果 condition3 不成立,那么繼續(xù)執(zhí)行后邊的 elif。
如果所有的 if 和 elif 判斷都不成立,就進入最后的 else,執(zhí)行 statementn。
首先, [ 后面要有空格。
其次確認(rèn)你的系統(tǒng)里有 test 命令,一般這個命令在 /usr/bin 下或者 /bin 下。 如果這個命令有,那么再確認(rèn)在同目錄下有 [ 命令 (如果沒有 [ ,你可以 cp /path/to/test /path/to/[ ), [ 命令是 test 的一個別名。然后你的腳本應(yīng)該就可以用了。
如果這兩個命令都能找到,但是仍然不能運行腳本,說明你的 PATH 環(huán)境變量不對,可以在腳本里加上
PATH=$PATH:/path/to/xxx
其中 /path/to/xxx 是 test 和 [ 所在目錄
## 方法1
a=1234;echo "$a"|[ -n "`sed -n '/^[0-9][0-9]*$/p'`" ] echo string a is numbers
第一個-n是shell的測試標(biāo)志,對后面的串"`sed -n '/^[0-9][0-9]*$/p'`" 進行測試,如果非空,則結(jié)果為真。
sed默認(rèn)會顯示所有輸入行信息的,sed 的“-n”選項是讓sed不要顯示,而只顯示我們所需要的內(nèi)容:即后面的表達式所匹配的行,這是通過表達式中加入“p”命令來實現(xiàn)的。
/^[0-9][0-9]*$/他的含義是匹配至少由一位數(shù)字構(gòu)成的行
## 方法2, 可以,不過不是bash實現(xiàn)的,是使用了grep的正則
#if grep '^[[:digit:]]*$' "$1";then
# echo "$1 is number."
#else
# echo 'no.'
#fi
## 方法3
#if [ "$1" -gt 0 ] 2/dev/null ;then
# echo "$1 is number."
#else
# echo 'no.'
#fi
## 方法4,case
#case "$1" in
# [1-9][0-9]*)
# echo "$1 is number."
# ;;
# *)
# ;;
#esac
## 方法5,awk
#echo $1| awk '{print($0~/^[-]?([0-9])+[.]?([0-9])+$/)?"number":"string"}'
## 方法5,awk
#if [ -n "$(echo $1| sed -n "/^[0-9]\+$/p")" ];then
# echo "$1 is number."
#else
# echo 'no.'
#fi
## 方法6,expr
expr $1 "+" 10 /dev/null
if [ $? -eq 0 ];then
echo "$1 is number"
else
echo "$1 not number"
fi
fi 是if語句的固定格式,shell里面有各種循環(huán),都有固定的格式,個人理解是告訴計算機,這個循環(huán)語句到此,類似case循環(huán)一esac結(jié)尾一樣。
當(dāng)前題目:linuxfi命令 linuxfind命令的用法
標(biāo)題來源:http://chinadenli.net/article44/dodsghe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、移動網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計公司、品牌網(wǎng)站設(shè)計、企業(yè)建站、商城網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)