當前位置:首頁 » 編程軟體 » 腳本ssh伺服器執行命令

腳本ssh伺服器執行命令

發布時間: 2024-12-01 12:24:24

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

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

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

Ⅱ 本地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在遠程Host執行交互命令

ssh執行遠程操作
命令格式

復制代碼 代碼如下:

ssh -p $port $user@$p 'cmd'

$port : ssh連接埠號
$user: ssh連接用戶名
$ip:ssh連接的ip地址
cmd:遠程伺服器需要執行的操作

准備工作
基於公私鑰認證或者用戶名密碼認證能確保登錄到遠程local2伺服器(有點基本運維知識的人做這個事情都不是問題)
cmd如果是腳本,注意絕對路徑問題(相對路徑在遠程執行時就是坑)
不足
這個命令可以滿足我們大多數的需求,但是通常運維部署很多東西的時候需要root許可權,但是有幾處限制:
遠程伺服器local2禁止root用戶登錄
在遠程伺服器腳本里轉換身份用expect需要send密碼,這樣不夠安全
ssh的-t參數
復制代碼 代碼如下:

-t Force pseudo-tty allocation. This can be used to execute arbitrary screen-based programs on a remote machine, which can be very useful, e.g. when implementing menu services. Multiple -t options force tty allocation, even if ssh has no local tty.

中文翻譯一下:就是可以提供一個遠程伺服器的虛擬tty終端,加上這個參數我們就可以在遠程伺服器的虛擬終端上輸入自己的提權密碼了,非常安全
命令格式

復制代碼 代碼如下:

ssh -t -p $port $user@$ip 'cmd'

示例腳本
復制代碼 代碼如下:

#!/bin/bash

#變數定義
ip_array=("192.168.1.1" "192.168.1.2" "192.168.1.3")
user="test1"
remote_cmd="/home/test/1.sh"

#本地通過ssh執行遠程伺服器的腳本
for ip in ${ip_array[*]}
do
if [ $ip = "192.168.1.1" ]; then
port="7777"
else
port="22"
fi
ssh -t -p $port $user@$ip "remote_cmd"
done

這個方法還是很方便的,-t虛擬出一個遠程伺服器的終端,在多台伺服器同時部署時確實節約了不少時間啊!

Ⅳ 需求:linux腳本ssh登錄到A機器然後再ssh到B機器然後再ssh到C機器,執行命令。這個腳本怎麼寫

#!/usr/bin/expect
spawnsshaaa@ip-address
expect"password:"
send"password "
expect"$"
send"sshbbb@ip-address "
expect"bbb@ip-address'spassword:"
send"password "
expect"$"
send"sshccc@ip-address "
expect"ccc@ip-address'spassword:"
send"password "
expect"$"
send"pwd "
interact

熱點內容
c語言程序試題 發布:2025-01-10 04:05:17 瀏覽:791
ibatis生成sql 發布:2025-01-10 03:56:10 瀏覽:517
我的表姐迪克電腦密碼多少 發布:2025-01-10 03:27:40 瀏覽:766
主機訪問P 發布:2025-01-10 03:17:09 瀏覽:755
滴滴出行腳本 發布:2025-01-10 03:17:03 瀏覽:743
安卓扁口有線耳機哪個好 發布:2025-01-10 03:12:06 瀏覽:643
cubemx中的時鍾如何配置 發布:2025-01-10 03:09:51 瀏覽:726
電腦頁面怎麼設置密碼 發布:2025-01-10 03:05:41 瀏覽:878
mp4加密提取 發布:2025-01-10 03:05:39 瀏覽:838
我的世界伺服器地址後綴 發布:2025-01-10 02:55:40 瀏覽:522