當前位置:首頁 » 編程軟體 » 腳本里執行ssh

腳本里執行ssh

發布時間: 2022-05-01 06:26:52

Ⅰ 如何在C語言程序中使用SSH

1、這種功能用腳本實現最好
2、最好弄成dsa公鑰驗證方式,也就是ssh無密碼登錄
3、ssh的密碼輸入是綁定到TTY而不是stdin的,所以無法重定向(到管道)
3.1、如果想通過程序輸入ssh密碼,那麼就要模擬TTY,或者讓ssh認為你的輸入是直接來自TTY
3.2、或者,你乾脆自己實現個最簡單的ssh協議吧
3.3、程序模擬TTY,一般會直接採用expact庫,這在腳本裡面很方便,但由於C處理字元串過於笨拙……
4、登錄之後,和ssh交互需要通過管道進行。用寫來模擬控制台鍵入字元,用讀來取命令輸出數據;至於命令返回值……讀 echo $? 的輸出吧
5、如果命令本身也有輸入/輸出提示,比如 rm xxx 會讓你按y什麼的,那麼你必須自己捕捉到這個提示,然後往管道寫一個"Y\n"進去。所以……也許還是expect方便。
6、你可以搞一個腳本,在腳本里用expect完成登錄動作,然後下interact命令進入交互模式;然後在C裡面用popen()執行這個腳本,這樣就可以避開登錄問題,但仍然要處理命令行交互問題(也就是回答are you sure之類的問題,當然這可以通過為命令傳入-y之類參數來繞開,不過有些命令未必支持)。

Ⅱ shell腳本通過ssh登錄到伺服器進行操作

呵呵,這個問題有意思。 仔細想想,是本地環境和伺服器環境的區別。你的腳本是存放在本地的,當你執行第一句的時候,已經轉化為伺服器的一個中斷,享用的是伺服器的環境。是看不到你本地的腳本的。

Ⅲ 如何用shell腳本實現SSH的遠程登錄

要帶跳過輸入密碼的環節么?
如果你想每次鏈接的時候自己手動輸入密碼,那就參考這樣寫
#!/bin/bash
ip=$1
ssh 用戶名@ip地址 -p埠號

保存後給執行許可權,運行時在腳本後面直接跟一個IP地址

如果你想每次鏈接的時候自動跳過輸入密碼的環境,那就再網路下「ssh建立信任關系」,腳本依然還是這個腳本,只是登陸的時候做了互相信任的話,就不需要密碼了

Ⅳ 在腳本中使用ssh時的幾個注意事項

1. 超時設置
-o ConnectTimeout=3
2. 重定項標准輸入到/dev/null
-n
當使用這樣的形式時 (使用 key 認證):
while read line ; do ip=$(awk '{print $1}' < << $line ) ssh -n -o ConnectTimeout=3 $i uptime done < file
假如此時不使用 -n ,則只有第一行會被處理。
3. 批處理模式,在腳本中使用再合適不過(使用 key 認證)
-o BatchMode=yes
當 key 認證不成功時,有可能會彈出「密碼認識」,從而影響腳本運行下去,此時可以打開 BatchMode模式。
4. 遇到未知主機:
-o StrictHostKeyChecking=no
當遇到未知的主機公鑰時,自動接受key。
5. 糟遇遠程主機連接後無響應:
當設置了 BatchMode 時 ServerAliveInterval 默認被設置成 300 秒(服務端無數據傳回的持續時間)。
ServerAliveCountMax相當於是重試的次數,比如下面的例子,15秒 x 3 = 45 秒,即當 45 秒後,真正超時斷開。
TCPKeepAlive打開時,便於發現網路的斷開。當網路故障(比如路由器壞掉)或者遠端開機、死機時,連接會主動斷開,否則的話,將會等待相當一段時間後才會斷開。
-o ServerAliveInterval=15
-o ServerAliveCountMax=3
-o TCPKeepAlive=yes
需要注意的是,這里的超時、無響應,僅是 ssh或者sshd無影響,假如是在遠程上執行程序,程序無響應,則不能處理此時的超時,解決方法見《在Shell中實現非同步》。

Ⅳ 在linux 腳本中使用了遠程登錄ssh,結果是 ssh:command not found

首先要查看一下ssh命令存在何處,一般是用which這個命令查看
#
which
ssh
/usr/bin/ssh
可能是樓主腳本中對環境變數有限制(樓主使用了crontab執行腳本?),所以應該在腳本開始的時候加上一句
PATH=$PATH:/usr/bin/ssh
或者直接再腳本中使用ssh的絕對路徑。

python腳本ssh命令行可以登錄並執行相應命令,但是腳本總是報錯,何解

編輯「/usr/local/python269/lib/python2.6/site-packages/pexpect/__init__.py
」,將「 raise EOF(str(err) + '\n' + str(self))」這段代碼注釋掉,程序正常運行

有些 UNIX 平台,當你讀取一個處於 EOF 狀態的文件描述符時,會拋出異常,注釋掉就可以了

Ⅶ 請教如何在Bash里調用ssh遠程執行命令

直接將所有可執行的各種命令寫在 bash 的 SHELL 腳本文件中即可。當然了,至於說該 SHELL 腳本文件是否可以執行?並不是說只要你的SHELL腳本文件中的命令都是可執行的,就能夠正確執行的。必須要使用命令:chmod +x my_shell.txt 將其修改成可執行許可權,且 SHELL 腳本文件中的每一個命令都是擁有 x 許可權(可執行許可權)的,才能夠在命令行狀態 $ 下面正常執行。

Ⅷ 利用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就該這么學》,為開源技術愛好者努力做得更多更好

Ⅸ SSH的運行腳本的語句


-V Display the version number and exit.

顯示版本號並退出。

退出SSH當然就斷開連接啦。


寫在shell腳本里,執行的時候是在新建shell中執行的,退出也只是退出新建shell回到原shell,所以不影響連接。

試試執行:

(ssh-V)

放到小括弧中,同樣會新建shell去執行。




Ⅹ shell腳本中怎麼ssh上遠程機執行命令

你好,
先在兩台機子上建立信任,ssh-key
具體方法網路下就有
腳本里的命令是
ssh 用戶@ip

熱點內容
隆地優選交易密碼是什麼 發布:2025-05-14 21:53:23 瀏覽:93
強酸強鹼存儲櫃 發布:2025-05-14 21:45:16 瀏覽:563
車輛參數配置包括什麼 發布:2025-05-14 21:31:03 瀏覽:163
怎麼引入安卓項目 發布:2025-05-14 21:26:39 瀏覽:824
游戲輔編程 發布:2025-05-14 21:18:49 瀏覽:687
三菱plc一段二段密碼什麼意思 發布:2025-05-14 21:17:16 瀏覽:528
電腦開機密碼忘記了怎麼破解 發布:2025-05-14 21:09:40 瀏覽:57
pythondict格式 發布:2025-05-14 21:09:38 瀏覽:886
落葉片拍攝腳本 發布:2025-05-14 20:40:49 瀏覽:799
安卓為什麼不能用cmwap 發布:2025-05-14 20:40:43 瀏覽:658