20.27 分發系統介紹
20.28 expect指令碼遠端登入
20.29 expect指令碼遠端執行命令
20.30 expect指令碼傳遞引數
expect也是一種指令碼語言(實現自動互動功能的套件),和shell類似,實現傳輸檔案和遠端執行命令的功能,無需輸入密碼(如何發布上線**,即把開發寫的**發布到開發環境中)
編寫expect指令碼實現遠端登入: 回到/usr/local/sbin下,建立1.expect如下圖所示並加執行許可權
定義語法為set,後面跟的是02機器的ip和密碼,spawn ssh root@host使用遠端ssh登入
expect核心指令碼中yes/no為互動判斷,如下圖第一次登入會判斷是否在known host中,如果不在則會出現,否則直接彈出password框;可以刪除 /root/.ssh/known_hosts檔案中的內容,expect核心指令碼內容就是匹配關鍵字並執行下一步的過程,如當提示有yes/no的互動頁面字樣時執行send "yes\r" ;(\r表示enter),exp_continue指令碼繼續,當發現password:字樣時輸入此前定義的變數$passwd並enter
提示錯誤,缺少spawn安裝包,yum list |grep spawn安裝後再次執行指令碼
spawn是expect的內建命令,只有進入expect環境後才可以執行的expect內建命令。它主要的功能是給呼叫expect的執行程序加個殼,用來對於輸出和特定響應之間的指令傳遞。
由於檔案頭的注釋部分的存在,導致對於expect的隱式呼叫未能正確執行。
如果將#!/usr/bin/expect 放在檔案的第一行,位於檔案頭注釋的前面,隱式呼叫也能正確執行。
最後確認是因為#!之間多了乙個空格,如下圖,遠端自動登入成功
expect指令碼遠端執行命令並退出
和1.expect不同在於後面的expect語句,當登入到02機器時,最後面expect的是]#(root使用者);]$(普通使用者),touch /tmp/下的乙個12.txt並加入1212內容,最後退出,執行指令碼如下圖
expect指令碼引數傳遞
1.expect指令碼中末尾的interact表示停留在遠端機器上,無需退出;如果末尾使用expect eof則會停留1-2秒後退出,如果都不加立馬退出,相當於是內建變數,第乙個引數為使用者,第二個為主機,都用lindex $argv表示,從0開始,第三個為命令(可以加多個,需要使用 " ; "的形式)
測試:如下圖,由於vmstat 1是乙個不斷執行的命令,但是expect指令碼通過傳遞引數登入終端後有乙個預設斷開時間,大約為10s,即使輸入的是死迴圈命令也會在退出終端後中斷執行
7月19日 週六
很久沒寫下這個了,前段時間期末各科需要交作業所以暫時擱下了,然後也懶得學習,懶得敲 了,連 也有些時候可以打也沒打。現在嘛,課結束了。我很震驚數論練習竟然有個 而不知道的我乙個題沒做,所以對於會不會掛科我還真沒有太大的自信。不過嘛,反正結課了,真掛了就掛了吧,這個成績本來也代表不了什麼,從學分上來看...
2023年7月19日學習筆記
整數型別 short 佔兩位元組的儲存空間,表數範圍為 32768 32768 最高位為符號位0表正1表負 unsigned short 無符號短整型,佔2個位元組的儲存空間,最高位位數值表數範圍為0 65535 int 佔4位元組,最高位為符號位 0表正,1表負 表數範圍為 2147483648 ...
7月19日學習 指標與陣列
函式的指標 可通過該指標呼叫該函式 定義 函式指標是函式的物理入口位址,即在編譯時,分配的物理入口位址。格式 型別 指標變數名 int p 這裡的型別是指函式返回值型別。呼叫 指標變數名 實參列表 p 或者p 對於函式指標,p p n等等無意義。函式返回指標的注意事項陣列 同質,有序,連續。注意下標...