Python 自動登入 SSH 執行指令

Python 自動登入 SSH 執行指令完整教學與實務案例

在 Linux 系統管理與 DevOps 工作中,管理多台伺服器可能非常繁瑣,尤其要登入不同主機執行指令或檢查狀態。透過 Python SSH 自動化腳本,新手也能快速完成批次操作,包括安裝套件、建立連線、執行指令及收集結果。本文將從安裝 paramiko 到多台伺服器管理,提供詳細步驟與實務案例,讓你安全、高效地掌握自動化操作。

為什麼需要 Python 自動登入 SSH?

每天管理多台 Linux 伺服器,手動 SSH 登入執行更新、檢查狀態或部署應用不僅耗時,也容易出錯。透過 Python SSH 自動化,新手只需學會建立 paramiko 連線,就能一次批次執行多個指令,支援金鑰登入並回傳執行結果。這不僅節省時間,也降低操作錯誤風險,並可設定錯誤處理機制避免程式中斷,讓系統管理與 DevOps 工作更穩定安全。

Python SSH 自動化操作步驟

步驟 1:安裝 paramiko 套件

打開你的終端機或命令提示字元(視作業系統而定),直接輸入以下指令安裝:


# Windows CMD
C:\Users\你的使用者> pip install paramiko

# Linux/macOS Terminal
user@computer:~$ pip install paramiko

如果系統同時有 Python2 與 Python3,可使用 python3 -m pip install paramiko

步驟 2:建立 SSH 腳本

新手可依照以下範例建立 Python 檔案(例如 ssh_connect.py),設定伺服器資訊與連線方式:


import paramiko

hostname = "你的伺服器 IP"
port = 22
username = "你的帳號"
password = "你的密碼"

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname, port, username, password)

# 之後可用 ssh.exec_command("指令") 執行命令
ssh.close()

備註:新手只需修改 hostnameusernamepassword,即可測試連線。

實務案例

案例一:單台伺服器基本 SSH 登入與指令執行


ssh.connect(hostname, port, username, password)
stdin, stdout, stderr = ssh.exec_command("ls -l /home/user")
print(stdout.read().decode())
ssh.close()

備註:這段程式碼示範如何登入單台伺服器並執行基本指令,新手可先練習簡單命令。

案例二:批次執行多個指令


commands = ["uptime", "df -h", "free -m"]
for cmd in commands:
    stdin, stdout, stderr = ssh.exec_command(cmd)
    print(f"指令: {cmd}")
    print(stdout.read().decode())

備註:將多個指令放入列表中即可批次執行,方便快速收集系統資訊。

案例三:批次管理多台伺服器


servers = ["192.168.1.101", "192.168.1.102"]
for host in servers:
    ssh.connect(host, port, username, password)
    stdin, stdout, stderr = ssh.exec_command("uptime")
    print(host, stdout.read().decode())
    ssh.close()

備註:使用迴圈可同時管理多台伺服器,對新手來說簡單易懂。

FAQ 常見問題

Python SSH 自動化安全嗎?

安全性高,只要採用金鑰登入與正確權限設定。原因:避免明文密碼和錯誤操作。補充:搭配防火牆與使用者權限控管,可進一步降低風險,適合新手與資深管理員。

可以同時登入多台伺服器嗎?

可以使用迴圈或多線程批次登入。原因:Python 可建立多個 SSH 連線同時操作。補充:新手只要照範例修改伺服器列表,即可同時管理多台伺服器。

Python 可以替代 Ansible 嗎?

簡單任務可使用 Python。原因:Python 透過 paramiko 就能自動化指令執行。補充:大型或複雜部署仍建議使用專業工具如 Ansible 或 Fabric。

    PAGE TOP