Pengaturcaraan pelayan Python: Menggunakan Paramiko untuk melaksanakan operasi jauh SSH

WBOY
Lepaskan: 2023-06-18 13:10:53
asal
2776 orang telah melayarinya

Dengan pembangunan pengkomputeran awan dan Internet of Things, pengendalian jauh pelayan telah menjadi semakin penting. Dalam Python, kita boleh menggunakan modul Paramiko untuk melaksanakan operasi jauh SSH dengan mudah. Dalam artikel ini, kami akan memperkenalkan penggunaan asas Paramiko dan cara menggunakan Paramiko dalam Python untuk mengurus pelayan dari jauh.

Apakah Paramiko

Paramiko ialah modul Python untuk SSHv1 dan SSHv2 yang boleh digunakan untuk menyambung dan mengawal klien SSH dan pelayan SSH. Menggunakan modul Paramiko, anda boleh menulis skrip Python dengan mudah untuk log masuk dan mengendalikan pelayan dari jauh.

Penggunaan asas Paramiko

Penggunaan asas modul Paramiko adalah sangat mudah. ​​Kita boleh menggunakan kelas SSHClient Paramiko untuk mencipta objek klien SSH dan menyambung ke pelayan SSH. Berikut ialah contoh asas:

import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('hostname', username='username', password='password')
Salin selepas log masuk

Dalam contoh ini, kami mula-mula mencipta objek SSHClient dan menggunakan kaedah set_missing_host_key_policy untuk membenarkan kunci SSH yang hilang ditambah secara automatik. Kami kemudian menyambung ke pelayan SSH menggunakan kaedah sambungan, menghantar nama hos, nama pengguna dan kata laluan sebagai parameter.

Kini, kami telah berjaya menyambung ke pelayan SSH. Seterusnya, kita boleh menggunakan objek SSHClient untuk melaksanakan arahan jauh, seperti mendapatkan maklumat sistem pengendalian pelayan:

stdin, stdout, stderr = ssh.exec_command('uname -a')
print(stdout.read())
Salin selepas log masuk

Dalam contoh ini, kami menggunakan kaedah exec_command untuk melaksanakan perintah uname -a dan mendapatkan output. Kami juga menggunakan stdout.read() untuk membaca output dan mencetaknya.

Selain melaksanakan arahan jauh, kami juga boleh menggunakan objek SSHClient untuk memuat naik dan memuat turun fail. Berikut ialah contoh memuat naik fail:

sftp = ssh.open_sftp()
local_file = '/path/to/local/file.txt'
remote_file = '/path/to/remote/file.txt'
sftp.put(local_file, remote_file)
sftp.close()
Salin selepas log masuk

Dalam contoh ini, kami mula-mula menggunakan kaedah open_sftp untuk membuka sesi SFTP dan menggunakan kaedah put untuk memuat naik fail tempatan ke pelayan jauh. Kami juga menggunakan kaedah sftp.close() untuk menutup sesi SFTP.

Gunakan Paramiko untuk melaksanakan operasi jauh SSH

Sekarang kami telah memahami penggunaan asas Paramiko, seterusnya, kami akan menggunakan Paramiko untuk mengendalikan pelayan dari jauh. Kami akan melaksanakan fungsi berikut:

  • Sambung ke pelayan SSH dan laksanakan beberapa arahan asas
  • Buat dan padam folder
  • Muat naik dan muat turun fail

Pertama, kita perlu memasang modul Paramiko:

pip install paramiko
Salin selepas log masuk

Seterusnya, mari tulis skrip Python. Mula-mula, kami mengimport modul yang diperlukan:

import os
import paramiko
Salin selepas log masuk

Kemudian, kami mentakrifkan beberapa pemalar, termasuk nama hos, nama pengguna dan kata laluan pelayan SSH:

HOST = 'hostname'
USER = 'username'
PASSWORD = 'password'
Salin selepas log masuk

Seterusnya, kami boleh menggunakan paramiko.SSHClient Kelas untuk menyambung ke pelayan SSH:

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(HOST, username=USER, password=PASSWORD)
Salin selepas log masuk

Dalam contoh ini, kami menggunakan kaedah set_missing_host_key_policy() untuk menambah kunci SSH yang hilang secara automatik.

Seterusnya, kami akan menentukan beberapa fungsi untuk melaksanakan tugas yang berbeza. Yang pertama ialah fungsi yang melaksanakan arahan:

def run_command(command):
    stdin, stdout, stderr = ssh.exec_command(command)
    output = stdout.read().decode('utf-8')
    return output
Salin selepas log masuk

Fungsi ini menerima parameter arahan, menggunakan kaedah exec_command objek SSHClient untuk melaksanakan arahan dan mengembalikan output sebagai rentetan.

Seterusnya, kami mentakrifkan fungsi untuk mencipta direktori:

def create_directory(path):
    sftp = ssh.open_sftp()
    try:
        sftp.mkdir(path)
    except IOError:
        pass
    sftp.close()
Salin selepas log masuk

Fungsi ini menerima parameter laluan dan mencipta direktori menggunakan sesi SFTP.

Kami juga mentakrifkan fungsi untuk memuat naik dan memuat turun fail:

def upload_file(local_path, remote_path):
    sftp = ssh.open_sftp()
    sftp.put(local_path, remote_path)
    sftp.close()


def download_file(remote_path, local_path):
    sftp = ssh.open_sftp()
    sftp.get(remote_path, local_path)
    sftp.close()
Salin selepas log masuk

Fungsi ini masing-masing menerima laluan setempat dan laluan jauh (untuk memuat naik) atau laluan jauh dan laluan setempat (untuk memuat turun ), dan gunakan sesi SFTP untuk memuat naik atau memuat turun fail yang sepadan.

Akhir sekali, kami akan mentakrifkan fungsi utama untuk melaksanakan semua tugas:

def main():
    # Run a command
    output = run_command('ls -la')
    print(output)

    # Create a directory
    create_directory('/home/username/new_folder')

    # Upload a file
    upload_file('/path/to/local/file.txt', '/home/username/new_folder/file.txt')

    # Download a file
    download_file('/home/username/new_folder/file.txt', '/path/to/local/file.txt')

    # Close the SSH connection
    ssh.close()
Salin selepas log masuk

Fungsi utama ini melaksanakan tugas berikut:

  • Laksanakan arahan ls -la dan cetak Output
  • Mencipta direktori baharu
  • Memuat naik fail
  • Memuat turun fail yang sama
  • Sambungan SSH tertutup

Sekarang, kita boleh menjalankan skrip ini dan melihat output:

python ssh.py
Salin selepas log masuk

Hasilnya sepatutnya seperti berikut:

total 20
drwxr-xr-x 1 username username 4096 Aug 15 02:24 .
drwxr-xr-x 1 username username 4096 Aug 15 02:20 ..
-rw------- 1 username username 1675 Aug 15 02:21 .bash_history
-rw-r--r-- 1 username username  220 Aug 15 02:20 .bash_logout
-rw-r--r-- 1 username username 3771 Aug 15 02:20 .bashrc
drwx------ 1 username username 4096 Aug 15 02:20 .cache
drwxr-xr-x 1 username username 4096 Aug 15 02:20 .config
drwx------ 1 username username 4096 Aug 15 02:20 .gnupg
-rw-r--r-- 1 username username  807 Aug 15 02:20 .profile
-rw-r--r-- 1 username username    0 Aug 15 02:21 test.txt
Salin selepas log masuk

Ringkasan

Alat kawalan jauh SSH boleh dicapai dengan mudah menggunakan Modul Paramiko beroperasi. Dalam artikel ini, kami memperkenalkan penggunaan asas Paramiko dan menunjukkan cara menggunakan Paramiko dalam Python untuk mengurus pelayan dari jauh. Sama ada dalam bidang pengkomputeran awan atau Internet Perkara, Paramiko ialah alat yang sangat berguna yang boleh membantu kami mengautomasikan pengurusan pelayan.

Atas ialah kandungan terperinci Pengaturcaraan pelayan Python: Menggunakan Paramiko untuk melaksanakan operasi jauh SSH. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!