ssh的shell腳本
1. shell腳本中ssh到遠程機子時,提示輸入密碼用變數給出密碼 要怎麼做請各位幫忙
#!/usr/桐缺冊bin/expect
set pw pawword
spawn ssh 192.168.1.200
expect 'password: '
send "$pw\r"
expect '#'
send "exit\扮枯r"
expect eof
chmod +x ssh.sh
./局宏ssh.sh 試試呢 哈哈
2. 利用shell腳本執行ssh遠程另一台主機執行命令並返回命令的結果集
假設從主機A,檢查主機B上的進程,
需要在主機B上建立檢查用戶,例如叫x,
並設置通過public key認證登錄SSH,不會可以google搜一下,
然後,在A機器上執行:
ssh x@B ~/command.sh > result.txt
command.sh就是B機器上放置在x目錄下的腳本。
輸出結果應該是寫到了result.txt
或者另一種寫法
result=`ssh x@B ~/command.sh`
結果直接保存到result變數中了。
暫時沒有linux環境,所以沒有實際測試,你自己試試吧
免費提供最新Linux技術教程書籍,入門自學書籍《linux就該這么學》,為開源技術愛好者努力做得更多更好
3. Linux,在shell腳本中實現用ssh或者telnet方式登錄另一個linux主機,然後修改第二個linux上的一個文件。
#!/usr/bin/expect-f
settimeout30
setipaddr"192.168.0.100"#IP地址
setusername"root"#用戶名
setpassword"password"#密碼
spawnssh$username@$ipaddr
expect{
"yes/no"{send"yes ";exp_continue}
"password:"{send"$password "}
}
expect"]#"#用戶的提示符,根據需要修改一下
send"ls "#執行的命令,換成自己修改文件的
send"exit "
expecteof
exit
4. 本地shell腳本中ssh到遠程伺服器並執行命令
在實際運用中在當前伺服器執行命令後,需要在另一台伺服器繼續執行某些命令,和耐衫分開去到另一台伺服器執行也是比較麻煩的,因此整理下集中執行的方式喚腔
1、首先配置ssh免密操作
Linux 下實現SSH互信: https://www.jianshu.com/p/2456d98aa607
2、簡單命令
ssh [email protected] "cd /var/lib; ls; cd "
2.1 使用時注意,雙引號必須有。若沒加雙引號,第二條及之後的命令會在本地執行
2.2 分號是將兩條語句間隔開
2.3 單雙引的區別:單引號不會解析值,是什麼就傳什麼;雙引號會解析值,將解析結果傳過去
3、多條命令
ssh [email protected]<< reallssh
cd /var/lib/test
tar -zxvf api.com.tar.gz
......
exit
reallssh
3.1 命令寫在 << reallssh(開始畝悶) 至 reallssh(結束) 之間
3.2 reallssh可自己定義為其他形式
3.3 在結束前加上exit退出遠程
4、可能遇到的問題
問題:遠程登錄主機時出現Pseudo-terminal will not be allocated because stdin is not a terminal. 錯誤
解決方案:字面意思是偽終端將無法分配,因為標准輸入不是終端。
所以需要增加-t -t參數來強制偽終端分配,即使標准輸入不是終端。
to force pseudo-tty allocation even if stdin isn』t a terminal.
參考樣例如下:
ssh -t -t [email protected] -p 22
--------------------------------------------------------------------------------
參考:https://blog.csdn.net/jinking01/article/details/84386769
5. 請問我在Linux下想實現一個終端同時通過SSH執行其它多個終端內的shell腳本怎麼實現
ssh $IP_102 -l $User "sh 102.sh"&
ssh $IP_103 -l $User "sh 103.sh"&
這樣執行就可以同時執行了,否則是一個一個執行的。
如果判斷是否執行完成就寫一個log日誌,看好讀日誌就可以了。