你好编码器!
Using Bash and Python together 在Linux系统上自动化任务是一种强大的组合。 bash 是大多数Linux发行版中的默认外壳, Python 是一种多功能的脚本语言。 Thanks for reading!
这是有关如何开始使用它们进行自动化的分步指南:
安装Python
大多数Linux分布都带有Python预装。您可以通过运行:
检查已安装的Python版本
$ python --version
如果未安装Python或您想使用特定版本,则可以使用Distraction的软件包管理器安装它。例如,在ubuntu上:
$ sudo apt-get update
$ sudo apt-get install python3
写python脚本
创建Python脚本以执行特定的任务或自动化。 Python是一种用于各种自动化需求的多功能语言,从文件操作到网络刮擦。
您可以使用Python的内置库或根据需要安装其他软件包。
这是一个 python的简单示例打印“你好,世界!”到终端:
#!/usr/bin/env python3
print("Hello, World!")
使脚本可执行:
要运行 python 作为从命令行的可执行文件,您需要使它们可执行。您可以使用chmod
命令来执行此操作。例如:
chmod +x myscript.py
使用bash进行脚本执行
您可以使用Bash致电并执行您的Python脚本。例如:
#!/bin/bash
python3 myscript.py
通过命令行参数
您可以将命令行参数传递给Bash的Python脚本。这些参数可用于自定义脚本的行为。
在Python中,您可以使用sys
模块的sys.argv
列表访问这些参数。例如:
#!/usr/bin/env python3
import sys
if len(sys.argv) > 1:
print("Hello, " + sys.argv[1] + "!")
else:
print("Hello, World!")
从Bash调用此脚本时,您可以提供一个名称作为参数:./myscript.py Alice
将打印“ Hello,Alice!”
自动化常见任务
确定要在Linux系统上自动化的任务。这些任务的范围可以从文件操作,备份,系统维护等。
编写执行这些任务的Python脚本,并使用bash脚本使用cron
之类的工具安排它们。
错误处理和记录
在Python脚本中实现错误处理和登录以优雅地捕获和处理异常。这样可以确保您可以对问题进行故障排除并有效地监视自动化过程。
安全考虑
自动执行任务时要注意安全性。避免在脚本中将敏感信息(如纯文本)存储在纯文本中。而是使用安全方法(例如环境变量或加密文件)。
测试和调试
在部署生产使用之前,请在安全环境中彻底测试您的脚本。使用Bash和Python中可用的调试工具来解决问题。
•更高级的样本
这是在Linux系统上使用Bash和Python一起使用Bash和Python的一些更高级的示例:
自动备份脚本
此脚本结合了Bash和Python,以创建一个自动备份系统。它标识文件备份,压缩它们,添加时间戳并将其存储在指定的备份目录中。
#!/bin/bash
# Define backup directory and create it if it doesn't exist
backup_dir="/path/to/backup"
mkdir -p $backup_dir
# Create a timestamp for the backup
timestamp=$(date +%Y%m%d%H%M%S)
# Define directories to back up
source_dir="/path/to/source"
# Archive and compress the source directory
tar -czf $backup_dir/backup_$timestamp.tar.gz -C $source_dir .
# Optionally, remove old backups to save space
find $backup_dir -type f -mtime +7 -exec rm {} \;
自动化系统监视脚本
此脚本使用Bash收集系统信息和Python发送通知。
它会定期检查系统指标,例如CPU使用,内存使用和磁盘空间,并发送电子邮件通知,如果任何指标超过预定义的阈值。
#!/bin/bash
# Define threshold values
max_cpu_usage=80
max_memory_usage=90
min_disk_space=10
# Get system metrics
cpu_usage=$(top -b -n 1 | awk '/%Cpu/{print $2}')
memory_usage=$(free -m | awk '/Mem/{printf("%.2f", $3/$2*100)}')
disk_space=$(df -h / | awk '/\//{print $5}' | sed 's/%//')
# Check and send notifications if thresholds are exceeded
if (( $(echo "$cpu_usage > $max_cpu_usage" | bc -l) )); then
python3 send_notification.py "High CPU Usage Alert: $cpu_usage%"
fi
if (( $(echo "$memory_usage > $max_memory_usage" | bc -l) )); then
python3 send_notification.py "High Memory Usage Alert: $memory_usage%"
fi
if (( $(echo "$disk_space < $min_disk_space" | bc -l) )); then
python3 send_notification.py "Low Disk Space Alert: $disk_space%"
fi
在此脚本中,send_notification.py
是一个Python脚本,它使用smtplib
等库发送电子邮件或其他类型的通知。
网络刮擦和数据分析脚本
此脚本使用Python的BeautifulSoup库进行网络刮擦和数据分析。它从网站获取数据,解析并执行数据分析或可视化任务。
#!/usr/bin/env python3
import requests
from bs4 import BeautifulSoup
import pandas as pd
import matplotlib.pyplot as plt
# Define the URL to scrape
url = "https://example.com/data"
response = requests.get(url)
# Parse HTML content
soup = BeautifulSoup(response.text, "html.parser")
# Extract and process data
data = []
for item in soup.find_all("div", class_="data-item"):
value = item.find("span", class_="value").text
label = item.find("span", class_="label").text
data.append((label, float(value)))
# Create a DataFrame
df = pd.DataFrame(data, columns=["Label", "Value"])
# Plot data
plt.bar(df["Label"], df["Value"])
plt.xlabel("Labels")
plt.ylabel("Values")
plt.title("Data Visualization")
plt.xticks(rotation=45)
plt.tight_layout()
# Save or display the plot
plt.savefig("data_plot.png")
这些高级示例证明了合并 bash和python 以在Linux系统上自动化的灵活性和功能。
关键文件监视
监视关键文件以进行更改和发送电子邮件通知时,当进行编辑时可能是有价值的安全性和审计措施。这是一个bash and python脚本组合来实现这一目标:
bash脚本(file_monitor.sh
):
此BASH脚本将定期检查关键文件是否使用其校验和进行更改(此示例中的MD5)。如果检测到更改,它将触发Python脚本发送电子邮件通知。
#!/bin/bash
# Define the critical files to monitor
file1="/path/to/critical_file1.txt"
file2="/path/to/critical_file2.txt"
# Store the initial checksums
md5sum1=$(md5sum "$file1")
md5sum2=$(md5sum "$file2")
while true; do
# Calculate the current checksums
current_md5sum1=$(md5sum "$file1")
current_md5sum2=$(md5sum "$file2")
# Compare checksums to detect changes
if [[ "$md5sum1" != "$current_md5sum1" ]]; then
python3 send_notification.py "Change detected in $file1 by $(whoami)"
md5sum1="$current_md5sum1"
fi
if [[ "$md5sum2" != "$current_md5sum2" ]]; then
python3 send_notification.py "Change detected in $file2 by $(whoami)"
md5sum2="$current_md5sum2"
fi
# Adjust the sleep interval (e.g., 5 minutes)
sleep 300
done
python脚本(send_notification.py
):
当检测到更改时,此Python脚本将发送电子邮件通知。它使用smtplib
库通过SMTP发送电子邮件。您需要配置SMTP服务器和凭据。
#!/usr/bin/env python3
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
# Email configuration
sender_email = "your_email@gmail.com"
receiver_email = "recipient_email@example.com"
password = "your_email_password"
smtp_server = "smtp.gmail.com"
smtp_port = 587
# Create the email message
subject = "File Change Alert"
body = "A change was detected in one of the critical files."
msg = MIMEMultipart()
msg['From'] = sender_email
msg['To'] = receiver_email
msg['Subject'] = subject
msg.attach(MIMEText(body, 'plain'))
# Send the email
try:
server = smtplib.SMTP(smtp_server, smtp_port)
server.starttls()
server.login(sender_email, password)
server.sendmail(sender_email, receiver_email, msg.as_string())
server.quit()
print("Email sent successfully.")
except Exception as e:
print("Email sending failed:", str(e))
注意
- 在bash脚本中替换关键文件的路径。
- 在Python脚本中配置电子邮件设置(Sender_email,Receiver_email,密码,SMTP服务器和SMTP端口)。
- 出于安全原因,如果您使用Gmail或类似的电子邮件服务,建议使用特定于应用程序的密码。
- 如果您使用Gmail发送电子邮件。
bash和python脚本的这种组合将监视指定的文件,并在检测到更改时发送电子邮件通知,包括进行编辑的用户。
In summary
,通过结合 bash和python 的功率,您可以在Linux系统上自动化各种任务,从而使您的管理和工作流程更有效。
记住要根据不断发展的需求不断改进和完善您的自动化脚本。
资源
- ðDeploy Projects使用您的首选提供商:
AWS
,GCP
,Azure
和GCP(很快) - ð从这项服务背后的团队中获取Deployment Support
- ð加入Community并与
DeployPRO
背后的团队聊天