日常小脚本沉淀(不定时更新)
Shell脚本
1、颜色输出
#!/bin/bash
# 定义颜色变量
red='\033[0;31m'
yellow='\033[1;33m'
blue='\033[0;34m'
green='\033[0;32m'
NC='\033[0m' # No Color
# 彩色文字输出函数
function echo_color()
{
# 循环读取参数
for ((i=1; i<=$#; i+=2)); do
color=${!i}
content=$(($i + 1))
echo -e -n "${!color}${!content}${NC} "
done
echo;
}
echo_color blue 蓝色输出 red 红色输出
2、mysql数据库自动备份脚本
#!/bin/bash
# 设置变量
MYSQL_PWD="/opt/mysql/bin"
#最小备份用户权限
#GRANT SELECT, PROCESS, LOCK TABLES, SHOW VIEW, EVENT, TRIGGER ON *.* TO `test1`@`%`;flush priviledges;
DB_USER="test1"
DB_PASSWORD="123456"
BACKUP_PATH="/root/mysql_backup/`date +%F_%T`"
DB_HOST="192.168.56.101"
DB_PORT="3306"
DAYS_TO_KEEP=15
# 获取所有数据库名
databases=`${MYSQL_PWD}/mysql -u$DB_USER -p$DB_PASSWORD -h $DB_HOST -P $DB_PORT -e "SHOW DATABASES;" | grep -Ev "Database|mysql|sys|_schema"`
# 检查备份路径是否存在,如果不存在则创建
if [ ! -d "$BACKUP_PATH" ]; then
mkdir -p "$BACKUP_PATH"
fi
# 删除15天之前的文件
find "$BACKUP_PATH" -mtime +$DAYS_TO_KEEP -exec rm -f {} \;
# 对每个数据库进行全量备份
for db in $databases; do
backup_file="$BACKUP_PATH/$db-$(date +%Y%m%d).sql"
#mysqldump -u$DB_USER -p$DB_PASSWORD -h $DB_HOST -P $DB_PORT --all-databases > "$backup_file"
#${MYSQL_PWD}/mysqldump -u$DB_USER -p$DB_PASSWORD -h $DB_HOST -P $DB_PORT $db | gzip > "${backup_file}.gz"
${MYSQL_PWD}/mysqldump -u$DB_USER -p$DB_PASSWORD -h $DB_HOST -P $DB_PORT $db | pigz -k > "${backup_file}.gz"
done
crontab定时执行
3、自动配置ssh免密登录
#!/bin/bash
set -e
input_file=input.txt
secretKey=~/.ssh/id_rsa
publicKey=${secretKey}.pub
# 定义颜色变量
red='\033[0;31m'
yellow='\033[1;33m'
blue='\033[0;34m'
green='\033[0;32m'
NC='\033[0m' # No Color
# 彩色文字输出函数
function echo_color()
{
# 循环读取参数
for ((i=1; i<=$#; i+=2)); do
color=${!i}
content=$(($i + 1))
echo -e -n "${!color}${!content}${NC} "
done
echo;
}
#判断secretKey是否存在
#if [ ! -d `dirname $secretKey` ];then
# mkdir -p `dirname $secretKey`
# chmod 700 `dirname $secretKey`
# touch $secretKey
#elif [ ! -f $secretKey ];then
# touch $secretKey
#fi
#生成密钥
echo_color "blue" "请按提示输入..."
read -p "是否需要在免密后完成后删除${input_file}(y/n):" yyy
ssh-keygen -t RSA -N '' -f $secretKey
# 读取文本文件内容
while read -r username password ip_address port; do
echo_color "blue" "************正在配置 $username@$ip_address 的免密登录...************"
#sshpass -p "$password" ssh-copy-id -f -i "${publicKey}" -o StrictHostKeyChecking=no -p "$port" "$username@$ip_address" 1>/dev/null
sshpass -p "$password" ssh-copy-id -f -i "${publicKey}" -o StrictHostKeyChecking=no -p "$port" "$username@$ip_address"
done < $input_file
ip=`awk '{print $3}' < $input_file`
ips=${ip[*]}
case $yyy in
[yY]|[yY][eE][sS])
rm -f $input_file
echo_color "green" "${ips}免密已配置完成, ${input_file}文件已删除"
;;
*)
echo_color "yellow" "${ips}免密已配置完成, ${input_file}文件未删除,为避免密码信息泄露,建议手动删除该文件"
esac
##登录
##ssh -i ${publicKey} -p ${port} 'username'@'ip_address'
input.txt样式
root 123456 192.168.56.101 22
test abc123 192.268.56.200 55555
Python脚本
1、pdf转word
from pdf2docx import Converter
def convert_pdf_to_word(pdf_file, docx_file):
# 创建一个PDF到Word的转换器对象
conv = Converter(pdf_file)
# 启动转换器并将输出保存到Word文件
with open(docx_file, 'wb') as outfile:
while conv.convert(outfile, start=0, end=None):
pass
# 关闭转换器
conv.close()
def main():
pdf_file = 'input.pdf' # 替换为你的PDF文件路径
docx_file = 'output.docx' # 输出的Word文件名和路径
convert_pdf_to_word(pdf_file, docx_file)
print("转换完成!")
if __name__ == "__main__":
main()