導航:首頁 > 程序命令 > ssh自動執行命令

ssh自動執行命令

發布時間:2023-01-07 10:22:04

『壹』 本地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

『貳』 如何通過SSH遠程運行命令自動化

從客戶端來看,SSH提供兩種級別的安全驗證。 第一種級別(基於口令的安全驗證),只要你知道自己的帳號和口令,就可以登錄到遠程主機,並且所有傳輸的數據都會被加密。但是,這種驗證方式不能保證你正在連接的伺服器就是你想連接的伺服器。

『叄』 python 模擬 ssh 執行遠程命令

日常開發連接 Linux 伺服器,都會用到 ssh 客戶端的軟體
其實 python 有一個模塊,可以簡單模擬一個 ssh 客戶端/服務端
編寫一些自動化的的任務時,會經常和它打交道
簡單記錄一下 paramiko 的基本使用

paramiko 不是標准庫,需要自行安裝
要求 py2.7,3.4 版本以上 [1]

在得到一個 ssh_client 客戶端連接對象後

第一次和伺服器建立連接,需要選擇是否自動將伺服器的 host_key 公鑰,記錄在本地

因為,在計算機的世界裡,沒有永久的朋友-- IP 短時間里不會刷新,但是系統可能隨時被重置

否則會報錯提示:

可以加入 logging 模塊,查看詳細的通訊過程

使用三個變數,獲取返回的信息對象

讀取命令的執行結果

『肆』 shell實現SSH自動登陸

[TOC]

註:需要執行許可權,可通過 sudo chmod +x ./file_name.sh 添加

sh file_name.sh 就是指定了腳本解釋器 /bin/sh 來解釋執行腳本;常見的腳本解釋器還有: /bin/bash 等,我們可以使用 ls -l /bin/*sh 命令來查看當前可用的腳本解釋器;

這種方式不會像前兩種方式一樣fork一個子進程去執行腳本,而是使用當前shell環境執行。我們不必重啟shell或者重新登錄系統,就能使當前的更改生效。一般用於 .bashrc或者.bash_profile被修改的時候,

定義:我們寫一個shell腳本時,總是習慣在最前面加上一行 #!/binbash ,它就是腳本的 shebang 。

作用:它指示了此腳本運行時的解釋器,使用文件名直接執行shell腳本時,必須帶上shebang。

使用:可以在shebang後面直接附加選項,執行時我們默認使用選項執行;

如 test.sh 的 shebang 為 #!/bin/sh -x ,那我們執行腳本時:

./test.sh hello 相當於: bin/sh -x ./test.sh hello ;

注意:在指定腳本解釋器來執行腳本時,shebang會被指定的腳本解釋器覆蓋。

expect是一個能實現自動和互動式任務的解釋器,它也能解釋常見的shell語法命令,其特色在以下幾個命令:

spawn command 命令會fork一個子進程去執行command命令,然後在此子進程中執行後面的命令;

它的一般用法為 expect "string" ,即期望獲取到string字元串,可在在string字元串里使用 * 等通配符; string 與命令行返回的信息匹配後,expect會立刻向下執行腳本;

set timeout n 命令將expect命令的等待超時時間設置為n秒,在n秒內還沒有獲取到其期待的命令,expect 為false,腳本會繼續向下執行;

一般用法為 send "string\r" , 向命令行輸入一條信息, \r 表示輸入回車;

創建腳本 touch aliyun_login_shell.sh ,內容如下:

執行 sudo chmod +x ./aliyun_login_shell.sh 命令給shell腳本添加執行許可權;

運行 ./aliyun_login_shell.sh 命令,一鍵登陸成功!

優化一下:

腳本完成了,可是還是有些小瑕疵:

這里我們想到了linux的alias命令:

執行命令 vim ~./bash_profile ,在文件內部添加:

再使用 . ~./bash_profile 或 source ~./bash_profile

從此,我們無論在哪個目錄,只要輸入 alias_name 命令,回車,真正的一鍵登陸!

參考:

https://www.cnblogs.com/qiumingcheng/p/11544569.html

『伍』 SSH中在文件下執行命令

# screen [-AmRvx -ls -wipe][-d <作業名稱>][-h <行數>][-r <作業名稱>][-s ][-S <作業名稱>]
參數說明
-A 將所有的視窗都調整為目前終端機的大小。
-d <作業名稱> 將指定的screen作業離線。
-h <行數> 指定視窗的緩沖區行數。
-m 即使目前已在作業中的screen作業,仍強制建立新的screen作業。
-r <作業名稱> 恢復離線的screen作業。
-R 先試圖恢復離線的作業。若找不到離線的作業,即建立新的screen作業。
-s 指定建立新視窗時,所要執行的shell。
-S <作業名稱> 指定screen作業的名稱。
-v 顯示版本信息。
-x 恢復之前離線的screen作業。
-ls或--list 顯示目前所有的screen作業。
-wipe 檢查目前所有的screen作業,並刪除已經無法使用的screen作業。

『陸』 教你如何通過ssh控制遠程主機,遠程執行命令

教你如何通過ssh控制遠程主機,遠程執行命令ssh控制遠程主機遠程執行命令這個分兩步,很簡單很實用。第一步,設置ssh免認證,免認證就是只不用密碼認證就可以直接登錄,這在寫腳本伺服器控制時特別有用。每二步,就是到遠端伺服器上去執行命令
假如現在有兩個伺服器,一個叫SA,另一個叫SB。現在我要在SA上去控制SB。
格式:ssh
SB_用戶名@SB_IP
命令for
example:ssh
[email protected]
echo
aaa>>hzs_test.txtssh
[email protected]
'echo
-e
haha/n
hoho
>>hzs_test.txt'

『柒』 ssh如何遠程執行命令

ssh支持遠程命令參數 可以類似方式嵌套: alias pushbaby='cd /Users/xuqiang/Develop/work/tickets/baby/deploy;scp -r -v -i ~/.ssh/pedal/id_rsa baby.tar.gz baby.sql.txt [email protected]:/home/qiang.xu/tmp;ssh [email protected] -i ~/.ssh/pedal/id_rsa "source ~/.bash_profile;pushbaby";ssh [email protected] -i ~/.ssh/pedal/id_rsa "ssh [email protected] \"source ~/.bash_profile;pushbaby\""'更新要注意的是alias在非交互模式無法使用,需將替換成function

『捌』 ssh遠程連接伺服器執行命令

首先說一下使用ssh遠程連接伺服器執行命令的方法:
為了方便描述,這里把測試伺服器稱之為A1,目標伺服器稱之為A2

如果可以直接登錄到A2,則配置成功!

下面來說問題:
ssh在遠程連接伺服器執行命令的時候,經常會遇到環境變數的問題,如下:

如果出現上面的提示,則說明環境變數配置有問題。
先來說解決辦法

問題解決!

這里就要說明bash有兩種方式interactive + login shell模式和non-interactive + non-login shell模式
在伺服器上執行命令,走的是interactive + login shell模式,而通過遠程登錄執行命令,走的是non-interactive + non-login shell模式。
這兩種模式對於環境變數的讀取是有區別的。

Shell首先會載入/etc/profile文件,然後再嘗試依次去載入下列三個配置文件之一,一旦找到其中一個便不再接著尋找:
~/.bash_profile
~/.bash_login
~/.profile

所以當遠程執行命令時,我們只需要讓~/.bashrc文件中的環境變數與/etc/profile中的環境變數一致即可!

參考:
如何解決SSH遠程執行命令找不到環境變數的問題

『玖』 簡單的ssh腳本怎麼編寫寫一個Linux下自動執行命令安裝mysql,jdk等的ssh腳本怎麼寫

這個網上很多根本不需要去琢磨吧,網路一鍵安裝lanp 就看到了

『拾』 windows下python實現自動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環境,所以沒有實際測試,你自己試試吧

閱讀全文

與ssh自動執行命令相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:757
蘋果郵件無法連接伺服器地址 瀏覽:962
phpffmpeg轉碼 瀏覽:671
長沙好玩的解壓項目 瀏覽:144
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:736
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:302
PDF分析 瀏覽:484
h3c光纖全工半全工設置命令 瀏覽:143
公司法pdf下載 瀏覽:381
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:349
風翼app為什麼進不去了 瀏覽:778
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:150
伊克塞爾文檔怎麼進行加密 瀏覽:892
app轉賬是什麼 瀏覽:163