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')
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())
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()
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:
Pertama, kita perlu memasang modul Paramiko:
pip install paramiko
Seterusnya, mari tulis skrip Python. Mula-mula, kami mengimport modul yang diperlukan:
import os import paramiko
Kemudian, kami mentakrifkan beberapa pemalar, termasuk nama hos, nama pengguna dan kata laluan pelayan SSH:
HOST = 'hostname' USER = 'username' PASSWORD = 'password'
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)
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
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()
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()
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()
Fungsi utama ini melaksanakan tugas berikut:
Sekarang, kita boleh menjalankan skrip ini dan melihat output:
python ssh.py
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
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!