大家好,我是死腦筋的資深菜鳥工程師,又來麻煩大家提供意見及想法。
目前「管理」的 Linux (Redhat 家族的) 主機數有約 170 台,想要將一些動作自動化及格式後,下載回來稍稍加工就可以使用,以省去每台登入並操作指令的機器人行為。
目前主機上的 Script 分成產製分割區使用狀況及安裝套件的版本兩部份,然後再配合 WinSCP 的 CMD 模式加上 Script 去下載,只是這個行為會觸發告警的通報,然後若是沒有適時的更新資訊,有可能會有遺漏,所以在想每台主機在產生檔案後,全部集中上傳到某台主機上,而若是我的 Script 若是有更新,也可以放到該主機上,讓各主機自行下載回去。
看了 scp 、 sftp 跟 rsync , rsync 利用模組的方式可以很容易的指定使用者及密碼,以及上傳設定 (上傳產生出的檔案),但是想不出來要如何將檔案下載下來 (新 Script),若是使用非模組方式,則都會有輸入密碼的問題,找了些文章,沒有找到可以輕易處理這部份的內容。
想來請教這個需求,除了我提到的方式外,還有沒有別的我不知道的方法?因為 GCB 的關係,所以利用 Key 的方式來「免輸密碼登入」應該是不可行。
謝謝大家!
一般像是共用的程式類,我會建議以下方式來處理
其它的還有如下方式
即於資料同步,GIT方式就不建議了。但SMB或S3的部份還是可以使用。
各主機資料寫到某台DB?
這種批量管理工作一律推薦 Ansible。
如果我沒有會錯意,
或許所有機器都 mount 同一個 nfs 目錄,script 也放在這個目錄下,
產出的report 也都寫進這個目錄放,就不用 scp / rsync 了,
這樣能避免用 Winscp 觸發告警的問題?
可以使用expect指令,可以模擬鍵盤輸入
cat test.exp
#!/usr/local/bin/expect
spawn telnet 10.1.0.X
expect Username:
send "admin\n"
expect Password:
send "1234\n"
expect "admin#"
send "ls\n"
expect "admin#"
send "exit\n"
改一下telnet 變成 ftp /ssh....都能跑
170台如果架構差不多,改一下IP即可,如要每台要裝NTS/Samba/Web會死人
我這有20幾台各式L2交換器,要定期或立即抓各台各埠資料,就是者麼做
把螢幕回應抓回來,再慢慢用regex分析分類入檔
前陣子腳本從ftp轉sftp也有遇到沒辦法帶user password的問題
發現一個套件可以完美解決:lftp (走sftp還是要連過一次產生指紋)
剛好redhat系列的repo應該就有
以下範例, 不清楚就看man page吧
lftp -u $user,$password sftp://$ip <<EOF
lcd $dir_local
cd $dir_remote
put $file_local
get $file_remote
bye
EOF