Python เป็นภาษาโปรแกรมมิ่งที่ยอดเยี่ยมสำหรับการทำงานอัตโนมัติด้านการบริหารระบบบน Linux ด้วยไลบรารีที่หลากหลาย จะช่วยเพิ่มประสิทธิภาพให้กับงานต่างๆ ได้อย่างมาก จากตัวอย่างด้านล่าง คุณจะสามารถรันคำสั่งระบบ Linux, จัดการไฟล์และไดเรกทอรี, ทำงานด้านเครือข่าย และทำให้กระบวนการตรวจสอบสิทธิ์เป็นอัตโนมัติได้ในไม่กี่วินาที
Python คืออะไร?
Python สามารถอธิบายได้ว่าเป็นภาษาโปรแกรมมิ่งเพื่อวัตถุประสงค์ทั่วไป (general-purpose) ถูกพัฒนาโดยนักวิทยาการคอมพิวเตอร์ชาวดัทช์ชื่อ 귀도 ฟาน รอสซัม (Guido van Rossum) ในช่วงปลายทศวรรษ 1980 และต้นทศวรรษ 1990 เพื่อเป็นภาษาโปรแกรมที่มีการกำหนดชนิดข้อมูลแบบไดนามิก (dynamically-typed) และเป็นผู้สืบทอดมาจากภาษาโปรแกรม "ABC"
ปัจจุบัน Python ถือเป็นหนึ่งในภาษาโปรแกรมมิ่งที่ได้รับความนิยมมากที่สุดในโลก มีกรณีการใช้งานตั้งแต่การพัฒนาเว็บ ไปจนถึงคณิตศาสตร์ซับซ้อนและการคำนวณทางวิทยาศาสตร์ นอกจากนี้ยังได้รับการยกย่องในไวยากรณ์ที่สง่างามและค่อนข้างง่ายต่อการเรียนรู้
การติดตั้ง Python บน Linux
หลายการแจกจ่าย Linux (distributions) มักมี Python ติดตั้งมาโดยค่าเริ่มต้นแล้ว เพื่อตรวจสอบว่าระบบของคุณมี Python 3 ติดตั้งอยู่หรือไม่ สามารถรันคำสั่ง python3 พร้อมแฟล็ก --version ได้ดังนี้:
python3 --version
หากติดตั้ง Python แล้ว คำสั่งจะแสดงเวอร์ชันของ Python ที่กำหนดค่าไว้
สำหรับการติดตั้ง Python บน Ubuntu และ Debian:
sudo apt update && sudo apt upgrade -y sudo apt install python3.10
ทางเลือกอื่นคือ ดาวน์โหลด Python ในรูปแบบไฟล์ ".tgz" หรือ ".xz" ได้เช่นกัน
การใช้โมดูล "os"
หนึ่งในไลบรารี Python ที่ดีที่สุดสำหรับผู้ดูแลระบบ Linux คือโมดูล "os" สามารถนำมาใช้ทำให้งานต่างๆ กลายเป็นอัตโนมัติ เช่น การจัดการไดเรกทอรีและไฟล์ รวมถึงการรันคำสั่งระบบ
ตัวอย่างเช่น สามารถใช้โมดูลนี้สร้างไดเรกทอรีใหม่ได้:
# นำเข้าโมดูล OS
import os
# ชื่อไดเรกทอรีใหม่
dir_name = "example"
try:
# สร้างไดเรกทอรีใหม่
os.mkdir(dir_name)
# แสดงผลหากสร้างสำเร็จ
print(f"Directory '{dir_name}' created successfully")
# แสดงผลหากไดเรกทอรีมีอยู่แล้ว
except FileExistsError:
print(f"Directory '{dir_name}' already exists")
สามารถลบไดเรกทอรีได้เช่นกัน:
import os
dir_name = "example"
try:
os.rmdir(dir_name)
print(f"Directory '{dir_name}' deleted successfully")
except FileNotFoundError:
print(f"Directory '{dir_name}' doesn't exist")
ย้ายชื่อไฟล์และไดเรกทอรี:
import os
current_name = "example"
new_name = "example2.0"
try:
os.rename(current_name, new_name)
print(f"Directory/File '{current_name}' was successfully renamed to '{new_name}'")
except FileNotFoundError:
print(f"Directory/File '{current_name}' doesn't exist")
ลบไฟล์ได้ง่ายๆ:
import os
file_name = "example.txt"
try:
os.remove(file_name)
print(f"File '{file_name}' deleted successfully")
except FileNotFoundError:
print(f"File '{file_name}' doesn't exist")
แสดงไดเรกทอรีทำงานปัจจุบัน:
import os
try:
cwd = os.getcwd()
print(cwd)
except:
print("An error occurred")
ตรวจสอบเนื้อหาในไดเรกทอรี (ไฟล์และไดเรกทอรีย่อย):
import os
dir_name = "example"
try:
content = os.listdir(dir_name)
print(content)
except FileNotFoundError:
print(f"Directory '{dir_name}' doesn't exist")
แสดงผู้ใช้ปัจจุบัน:
import os
try:
user = os.getlogin()
print(user)
except:
print("An error occurred")
รันคำสั่ง Linux shell ผ่านโมดูล:
import os
command = "sudo apt update && sudo apt upgrade -y"
try:
result = os.system(command)
print(result)
except:
print("An error occurred")
การทำงานด้านเครือข่ายด้วยโมดูล "socket"
Python มีโมดูลสำหรับงานเครือข่ายและสร้างเครื่องมือที่ซับซ้อน เช่น พอร์ตสแคนเนอร์ (port scanner) และเซิร์ฟเวอร์เกม โมดูล "socket" จึงสามารถใช้ทำงานเครือข่ายพื้นฐานบนระบบของคุณได้
ตัวอย่างเช่น ตรวจสอบที่อยู่ IP และโฮสต์เนมของระบบ:
import socket
try:
host = socket.gethostname()
ip = socket.gethostbyname(host)
print(f"IP address: {ip}")
print(f"Hostname: {host}")
except:
print("An error occurred")
ตรวจสอบที่อยู่ IP ของเว็บไซต์:
import socket
try:
domain = "duckduckgo.com"
ip = socket.gethostbyname(domain)
print(f"IP address: {ip}")
except:
print("An error occurred")
ใช้ Paramiko ล็อกอิน SSH Server และรันคำสั่ง
หากต้องการทำให้กระบวนการล็อกอินเข้า SSH server และรันคำสั่งเป็นอัตโนมัติ ไลบรารี "Paramiko" จะเป็นประโยชน์มาก
ติดตั้งไลบรารีผ่าน pip3:
pip3 install paramiko
ใช้งาน Paramiko เพื่อเชื่อมต่อ SSH และรันคำสั่ง:
import paramiko
ip = '127.0.0.1'
port = 22
user = 'example'
password = 'example'
command = "uname -a"
try:
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(ip, port, user, password)
stdin, stdout, stderr = ssh.exec_command(command)
print(stdout.read().decode())
except:
print("An error occurred")
คำถามที่พบบ่อย
1. จำเป็นต้องใช้ Python 3 สำหรับโมดูลและไลบรารีเหล่านี้หรือไม่?
แม้โมดูลและไลบรารีส่วนใหญ่จะทำงานกับ Python 2 ได้ แต่ไวยากรณ์แตกต่างกัน ทำให้โค้ดเหล่านี้รันไม่ได้ หากปรับเปลี่ยนบ้างอาจทำให้รันบน Python 2 ได้ แต่ Python 2 ล้าสมัยแล้ว ควรใช้ Python 3
2. ต้องติดตั้งโมดูล "os" และ "socket" เองหรือไม่?
โดยทั่วไป ไม่จำเป็น เพราะการติดตั้ง Python ส่วนใหญ่มาพร้อมกับโมดูลเหล่านี้อยู่แล้ว
3. สามารถใช้ Paramiko ล็อกอินระบบที่ไม่ใช่ Unix ได้หรือไม่?
ตามนักพัฒนา Paramiko ขณะนี้ไลบรารีนี้ยังไม่สามารถใช้ล็อกอินระบบที่ไม่ใช่ Unix ผ่าน SSH ได้