shell編程、ssh-root量產、ping-IP腳本操作 問題-flag

1-su root : Authentication failure問題的解決
su/(su root)命令不能切換root,提示su: Authentication failure;

只要你sudo passwd root過一次之後,下次再su的時候只要輸入密碼就可以成功登錄了;

如下圖:

ubuntu系統獲取root權限,並且實現xshell root登錄

 

1.首先我麼用ubuntu賬號登陸
2.然後我們輸入sudo passwd root 
3.這是我們需要輸入兩次密碼,建議輸入的與ubuntu的密碼一致(好記)
4.然後我們輸入sudo vi /etc/ssh/sshd_config  回車
找到 PermitRootLogin   without-password 修改爲
PermitRootLogin   yes
5.ESC    :wq保存退出   然後sudo service ssh restart  重啓
6.關閉xshell,然後用root賬戶登錄就可以了, 現在ftp就可以用root賬戶登錄上傳和下載文件了

2-ssh或ubuntu無法對同一個IP進行多次訪問

情況:量產設備(網口需要出廠的時候都設置爲同一個IP),當電腦電腦訪問不同的設備都同樣的IP時,電腦會自動識別爲防攻擊操作(禁止進入訪問):進入sudo vi /etc/ssh/ssh_config 解開如下注釋;對不同設備的同樣的IP可以進行訪問啦!

同類問題參考(解除防攻擊操作):SSH 登錄失敗:Host key verification failed 的處理方法

3-如何讓shell腳本設定爲,進入root系統後,可自動再系統內執行shell指令

在本地shell腳本中ssh到遠程服務器並執行命令

shell遠程執行腳本的目的:便於集中管理
  經常需要遠程到其他節點上執行一些shell命令,如果分別ssh到每臺主機上再去執行很麻煩,因此能有個集中管理的方式就好了。一下介紹兩種shell命令遠程執行的方法
前提條件配置ssh免密碼登陸
1-對於簡單的命令:
  如果是簡單執行幾個命令,則:ssh user@remoteNode "cd /home ; ls"
  基本能完成常用的對於遠程節點的管理了,幾個注意的點:
          (1)雙引號,必須有。如果不加雙引號,第二個ls命令在本地執行
          (2)分號,兩個命令之間用分號隔開
     對於腳本的方式:
       有些遠程執行的命令內容較多,單一命令無法完成,考慮腳本方式實現:
2-複雜操作-高級形式
#!/bin/bash
ssh user@remoteNode > /dev/null 2>&1 << eeooff
cd /home
touch abcdefg.txt
exit
eeooff
echo done!

遠程執行的內容在“<< eeooff ” 至“ eeooff ”之間,在遠程機器上的操作就位於其中,注意的點:

(1)<< eeooff,ssh後直到遇到eeooff這樣的內容結束,eeooff可以隨便修改成其他形式。
(2)重定向目的在於不顯示遠程的輸出了
(3)在結束前,加exit退出遠程節點

4-通過ping命令檢測IP地址的shell腳本,代碼如下:

#!/bin/sh
#filename ping.sh
#ping ip的腳本
pingcmd()
{
prefix="SERVER $1 PING $2"
ping -w 1 -c 1 $2>/dev/null
ret=$?
if [ $ret -eq 0 ]

then printf "$prefix is up"
else printf "$prefix is down \n"
fi
return 0
}
echo "---begin check host ---"
server0="192.168.1.3"
server1="192.168.1.2"
server2="192.168.1.1"
server3="192.168.1.4"
server4="192.168.1.5"
server5="192.168.1.6"
server6="192.168.1.7"
server7="192.168.1.9"
pingcmd $server0 $server1
pingcmd $server0 $server2
pingcmd $server0 $server3
pingcmd $server0 $server4
pingcmd $server0 $server5
pingcmd $server0 $server6
pingcmd $server0 $server7
echo ""

代碼說明:
通過調用shell函數pingcmd,實現ping設置在severX中的IP地址代表的主機。
分析下pingcmd函數的實現:
prefix="SERVER $1 PING $2"    //定義一個字符串,爲後面printf輸出做準備
ping -w 1 -c 1 $2>/dev/null          //調用ping函數,-w爲超時時間;-c爲ping的次數;
        ping -w 1 -c 1 $2  :從腳本所在機去ping之後pingcmd函數的第二個參數(本例爲之後建立的serve1-7),超時1秒,執行1次
        >/dev/null             :作用是把屏幕的輸出從指向到某處,/dev/null是指向空設備,即不需要標準輸出。
ret=$?                                      //獲取返回值,0爲ping成功
if [ $ret -eq 0 ]                          //如果返回值爲0,即ping成功
then printf "$prefixt is up"     //則輸出一開始定義的字符串(例:SERVER 192.168.1.3 PING 192.168.1.2 OK)
else printf "$prefixt is down" //同上,輸出錯誤信息(此處刪除標準輸出,之前已定義了輸)。
fi

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章