Paramiko 使用教程

目錄

  • 簡介
  • 安裝 Paramiko
  • 連接到遠程服務器
  • 執行遠程命令
  • 文件傳輸
  • 示例

簡介

Paramiko 是一個基于 Python 的 SSH 客戶端庫,它提供了在網絡上安全傳輸文件和執行遠程命令的功能。本教程將介紹 Paramiko 的基本用法,包括連接到遠程服務器、執行命令、文件傳輸等常見操作。

安裝 Paramiko

可以使用 pip 命令安裝 Paramiko:

pip install paramiko

連接到遠程服務器

創建一個 SSHClient 對象,使用 connect() 方法連接到遠程服務器:

# 創建 SSHClient 實例
ssh_client = paramiko.SSHClient()
# 允許連接不在 known_hosts 文件中的主機
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 連接到遠程服務器
ssh_client.connect(hostname, port, username, password)

執行遠程命令

使用 exec_command() 方法執行遠程命令,并獲取輸入、輸出和錯誤流:

# 執行遠程命令
stdin, stdout, stderr = ssh_client.exec_command(command)
# 向執行命令寫入信息(一般交互式命令會用到)
stdin.write(content)
# 讀取執行命令的輸出信息
output = stdout.read().decode()
# 讀取執行命令的報錯信息
error = stderr.read().decode()

文件傳輸

創建一個 SFTPClient 對象,使用 put() 和 get() 方法上傳和下載文件:

# 創建 SFTPClient 實例
sftp_client = ssh_client.open_sftp()
# 上傳文件
sftp_client.put(local_path, remote_path)
# 下載文件
sftp_client.get(remote_path, local_path)

示例

下面是一個完整示例,演示了 Paramiko 的基本用法,包括連接到遠程服務器、執行命令、文件傳輸等常見操作:

import paramiko
import timedef ssh_connect(hostname, port, username, password):# 創建 SSHClient 實例ssh_client = paramiko.SSHClient()# 允許連接不在 known_hosts 文件中的主機ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())# 連接到遠程服務器ssh_client.connect(hostname, port, username, password)return ssh_clientdef ssh_vim(ssh_client, path):# 執行 vim 命令,并獲取輸入、輸出和錯誤流stdin1, stdout1, stderr1 = ssh_client.exec_command(f'vim {path}')# 進入插入模式stdin1.write('i')# 插入文本stdin1.write('Hello World!')# esc 鍵,退出插入模式stdin1.write('\x1b')# 保持并退出stdin1.write(':wq\n')# 關閉執行命令的輸入流stdin1.close()# 等待 3 秒后,再查看文件內容,太快可能獲取不到最新的文件內容time.sleep(3)# 執行 cat 命令,并獲取輸入、輸出和錯誤流stdin2, stdout2, stderr2 = ssh_client.exec_command(f'cat {path}')# 讀取執行命令的輸出信息和錯誤信息,并輸出到控制臺print(stdout2.read().decode(), stderr2.read().decode())def sftp_put(ssh_client, local_path, remote_path):# 創建 SFTPClient 實例sftp_client = ssh_client.open_sftp()# 上傳文件sftp_client.put(local_path, remote_path)# 關閉 SFTP 連接sftp_client.close()def sftp_get(ssh_client, remote_path, local_path):# 創建 SFTPClient 實例sftp_client = ssh_client.open_sftp()# 下載文件sftp_client.get(remote_path, local_path)# 關閉 SFTP 連接sftp_client.close()if __name__ == '__main__':# 連接到遠程服務器ssh_client = ssh_connect(hostname, port, username, password)# 執行 vim 命令ssh_vim(ssh_client, path)# 上傳文件sftp_put(ssh_client, local_path, remote_path)# 下載文件sftp_get(ssh_client, remote_path, local_path)# 關閉 SSH 連接ssh_client.close()

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/77150.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/77150.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/77150.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

《TCP/IP網絡編程》學習筆記 | Chapter 24:制作 HTTP 服務器端

《TCP/IP網絡編程》學習筆記 | Chapter 24:制作 HTTP 服務器端 《TCP/IP網絡編程》學習筆記 | Chapter 24:制作 HTTP 服務器端HTTP 概要理解 Web 服務器端無狀態的 Stateless 協議請求消息(Request Message)的結構響應消息&#x…

【Quest開發】在虛擬世界設置具有遮擋關系的透視窗口

軟件:Unity 2022.3.51f1c1、vscode、Meta XR All in One SDK V72 硬件:Meta Quest3 僅針對urp管線 參考了YY老師這篇,可以先看他的再看這個可能更好理解一些:Unity Meta Quest MR 開發(七):使…

GPU 招投標全流程分析與總結

GPU 招投標全流程分析與總結 招投標流程概述 以下是通過代理商采購Nvidia H20-GPU 141G的招投標全流程分析: #mermaid-svg-hMPPfkCpGj8GKXfV {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-hMPPfkCpGj8GKXfV .er…

[C++] STL中的向量容器<vector>附加練習

目錄 講在前面(必看)八卦陣題目描述輸入格式輸出格式輸入輸出樣例數據范圍AC代碼及要點 決賽應援題目描述輸入格式輸出格式輸入輸出樣例數據范圍AC代碼及要點 講在前面(必看) 本篇為練習篇, vector講解篇在這里. 菜鳥食用前請做好心理準備(你懂的) 八卦陣 題目描述 n 名同學…

基于SpringBoot+Vue3實現的寵物領養管理平臺功能一

一、前言介紹: 1.1 項目摘要 隨著社會經濟的發展和人們生活水平的提高,越來越多的人開始關注并參與到寵物領養中。寵物已經成為許多家庭的重要成員,人們對于寵物的關愛和照顧也日益增加。然而,傳統的寵物領養流程存在諸多不便&a…

parameter和localparam的區別(verilog中)

在Verilog中,parameter 和 localparam 都用于定義常量,但是它們之間有一些重要的區 作用范圍: parameter:可以在模塊外部被修改或重定義。它可以被作為模塊的參數傳遞給其他模塊,因此具有較廣泛的作用范圍,…

鴻蒙API15 “一多開發”適配:解鎖黃金三角法則,開啟高效開發新旅程

一、引言 在萬物互聯的時代浪潮中,鴻蒙操作系統以其獨特的 “一多開發” 理念,為開發者打開了一扇通往全場景應用開發的新大門。“一多開發”,即一次開發,多端部署 ,旨在讓開發者通過一套代碼工程,就能高效…

Linux中docker容器拉取鏡像失敗解決方案

查看 /etc/systemd/system/docker.service.d/http-proxy.conf 文件(沒有則新建),查看自定義 Docker 服務的代理設置 輸入內容 [Service] Environment"HTTP_PROXYsocks5://10.211.13.214:7890" Environment"HTTPS_PROXYsocks…

半導體設備通信標準—secsgem v0.3.0版本使用說明文檔(2)之GEM(SEMI 30)

文章目錄 1、處理器1.1、事件 2、GEM 合規性2.1、狀態模型2.2、 設備加工狀態2.3、 文檔2.4、 控制 (作員啟動)2.5、 動態事件報告配置2.6、 跟蹤數據收集2.7、 報警管理2.8、 遠程控制2.9、 設備常量2.10、 工藝配方管理2.11、 物料移動2.12、 設備終端…

每日算法-鏈表(23.合并k個升序鏈表、25.k個一組翻轉鏈表)

一.合并k個升序鏈表 1.1題目描述 1.2題解思路 解法一:小根堆 我們可以先定義一個小根堆,將k個指針的頭結點如堆,每次取堆頂元素尾插到newhead中,然后再pop(),接著push堆頂原來堆頂元素的下一個節點 重點分析&#…

Java性能剖析工具箱

1. 基礎知識 1.1 Java性能調優概述 1.1.1 性能調優的重要性 性能調優是提升系統效率、降低成本和增強用戶體驗的關鍵步驟。通過優化,可以減少響應時間、降低資源消耗并提高系統的穩定性和可擴展性。 1.1.2 性能問題的常見表現 高CPU使用率:可能由熱點方法或線程阻塞引起。…

如何使用SpringApplicationRunListener在Spring Boot 應用的不同生命周期階段插入自定義邏輯

目錄 一、引言二、核心方法概述三、加載機制四、使用場景五、擴展 - 如何在測試的不同階段插入邏輯5.1 TestExecutionListener & AbstractTestExecutionListener5.1.1 主要功能5.1.2 生命周期方法 5.2 如何集成TestExecutionListener5.3 總結 一、引言 SpringApplicationR…

【NLP】 19. Tokenlisation 分詞 BPE, WordPiece, Unigram/SentencePiece

1. 翻譯系統性能評價方法 在機器翻譯系統性能評估中,通常既有人工評價也有自動評價方法: 1.1 人工評價 人工評價主要關注以下幾點: 流利度(Fluency): 判斷翻譯結果是否符合目標語言的語法和習慣。充分性…

openai發布今天發布了o3和o4-mini。

ChatGPT Plus、Pro和Team用戶已經可以使用o3、o4-mini和o4-mini-high,取代o1、o3-mini和o3-mini-high。具體特點: ChatGPT-o3 特點:o3模型使用高級推理技術,這意味著它在處理復雜問題和邏輯推理方面表現出色。但是不能聯網搜索 …

ESP-ADF外設子系統深度解析:esp_peripherals組件架構與核心設計(輸入類外設之觸摸屏 Touch)

目錄 ESP-ADF外設子系統深度解析:esp_peripherals組件架構與核心設計(輸入類外設之觸摸屏 Touch)簡介模塊概述功能定義架構位置核心特性 觸摸(Touch)外設觸摸外設概述觸摸外設API和數據結構外設層API(periph_touch.h/periph_touch…

python 讀取分級目錄

import osdef read_files_in_directory(root_dir):# 遍歷根目錄下的所有文件和目錄for year_dir in os.listdir(root_dir):year_path os.path.join(root_dir, year_dir)if os.path.isdir(year_path): # 確保是目錄for month_dir in os.listdir(year_path):# if month_dir in …

MongoServerError: Authentication failed.處理辦法

1停止MongoDB服務: systemctl stop mongod2臨時修改MongoDB配置,禁用認證: vim /etc/mongdb.config 在配置文件中找到 security:authorization: disabled # 臨時關閉認證3.重啟MongoDB服務 # 重啟MongoDB服務 sudo systemctl restart mon…

ObjectInputStream 終極解析與記憶指南

ObjectInputStream 終極解析與記憶指南 一、核心本質 ObjectInputStream 是 Java 提供的對象反序列化流,繼承自 InputStream,用于讀取由ObjectOutputStream序列化的Java對象。 核心特性速查表 特性說明繼承鏈InputStream → ObjectInputStream核心功能實現Java對象反序列化…

Java面試高頻問題(1-5)

一、HashMap實現原理與并發問題 核心機制 1. 哈希沖突解決方案:采用數組鏈表紅黑樹結構(JDK1.8),當鏈表長度超過閾值(默認8)時轉為紅黑樹,提升查詢效率 2. 擴容機制:當元素數量超過…

Genspark:重新定義AI搜索與代理的全能型工具

在當今快速發展的AI技術領域,搜索工具正在經歷前所未有的變革。Genspark,這家由前百度高管景鯤和朱凱華創立的AI公司,為我們帶來了全新的AI代理引擎體驗。作為一位專注于AI工具分享的博主,今天我將為大家詳細介紹這款強大的工具&a…