在遠端伺服器上執行本地的shell指令碼

2021-07-13 16:07:36 字數 1209 閱讀 7491

1 使用ssh實現

ssh user@hostname -c

"/bin/bash"

< test.sh

2 使用expect實現

採用的策略就是先在本地通過expect把shell指令碼推送到遠端伺服器上,之後再用expect模擬登入之後,先給遠端的shell指令碼許可權,然後再執行指令碼,

最後刪除指令碼就ok啦!ps:在expect和控制台互動的時候我設定的timeout時間是1s,如果執行的shell指令碼時間比較長的話,timeout應該大於shell指令碼的時長

下面是expect指令碼的**:

#!/home/map/.jumbo/bin/expect

set serverpwd [lindex $argv

0] #伺服器密碼

set serverip [lindex $argv

1] #伺服器ip

set address [lindex $argv

2] #伺服器存放路徑

set file [lindex $argv

3] #指令碼名

set timeout 5

#手動設定與控制台互動的時間

#將shell指令碼推送到遠端伺服器

spawn scp $file

$serverip:$address

expect

"*password:"

"*password:"

}#登入遠端伺服器

spawn ssh $serverip

expect

"*password:"

"*password:"

}expect "#"

#給shell指令碼新增許可權

send

"chmod a+x $address

$file\r"

expect "#"

#執行shell指令碼

send

"$address

$file

$address\r"

expect "#"

#刪除遠端伺服器上的shell指令碼

send

"rm $address

$file\r"

expect "#"

#退出send

"exit\r"

expect eof

本地Python執行遠端伺服器Python指令碼

情景 區域網內一台pc或伺服器 windows或linux 上有一python指令碼,如何執行它?常用的兩種 遠端桌面和xshell遠端連線 那假如想要不通過以上兩種方式的前提下執行它,可行麼?怎麼辦?答案是肯定的 coding utf 8 author lihaizhen date descrip...

在伺服器上搭建遠端git倉庫

推薦使用執行liunx的機器 請獲取root許可權後進行下面操作 檢查是否安裝了git如果有版本號就無需再安裝 git v 安裝git sudo apt get install gitsudo adduser git收集所有需要登入的使用者的公鑰,就是他們自己的id rsa.pub檔案按照本文找id...

本地遠端訪問伺服器jupyter

jupyter是它的公升級版,一般anaconda安裝包中會自帶。安裝好以後直接輸入jupyter notebook便可以在瀏覽器中使用。但是它預設只能在本地訪問,如果想把它安裝在伺服器上,然後在本地遠端訪問,則需要進行如下配置 參考教程 如使用shell6 或者 終端ssh登入 jupyter n...