帮我写一个shell脚本需要实现如下功能:ssh到多个ip下拿到每个ip下的slowlogold中的最后一条然后在另一个ip的数据库中执行并拿到执行的时间
以下是一个实现该功能的shell脚本示例:
#!/bin/bash
# 定义要连接的ip列表
ips=("ip1" "ip2" "ip3")
# 定义要连接的数据库ip
db_ip="db_ip"
# 定义数据库用户名和密码
db_user="db_user"
db_password="db_password"
# 定义日志文件名
log_file="slow.log.old"
# 遍历ip列表
for ip in "${ips[@]}"
do
# 连接到远程主机,获取slow.log.old的最后一行
last_line=$(ssh $ip "tail -n 1 $log_file")
# 连接到数据库主机,执行sql语句
start_time=$(date +%s%N)
ssh $db_ip "mysql -u$db_user -p$db_password -e \"$last_line\""
end_time=$(date +%s%N)
# 计算执行时间
execution_time=$((($end_time - $start_time) / 1000000))
# 输出执行结果
echo "IP: $ip"
echo "Execution Time: $execution_time ms"
echo "--------------------------"
done
你需要将其中的 ip1, ip2, ip3, db_ip, db_user, db_password 替换为实际的ip地址、数据库ip、用户名和密码。
注意:为了方便演示,脚本中使用了简单的时间戳来计算执行时间,实际情况下可能需要根据具体的需求进行调整。另外,脚本中的ssh命令需要保证能够免密登录到对应的远程主机。
原文地址: http://www.cveoy.top/t/topic/jdt6 著作权归作者所有。请勿转载和采集!