Python远程连接服务器并执行指令

# 导入paramiko模块
import paramiko
# 导入time模块
import time
# 导入datetime模块
import datetime
# 创建SSH连接对象
ssh = paramiko.SSHClient()
# 设置自动添加主机密钥
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接远程服务器,需要指定IP地址,端口号,用户名和密码
ssh.connect("xx.xx.xx.xx", 22, "user", "password")
# 让用户输入执行查看命令的间隔时间(单位为秒),并转换为整数
interval = int(input("请输入执行查看命令的间隔时间(单位为秒):"))
# 让用户输入执行总时长(单位为小时),并转换为整数
duration = int(input("请输入执行总时长(单位为小时):"))
# 用执行总时长乘以3600,除以间隔时间,得到执行的次数
times = duration * 3600 // interval
# 创建一个计数器,初始值为0
count = 0
# 创建一个无限循环
while True:
    # 执行查看命令,比如查看当前目录下的文件
    stdin, stdout, stderr = ssh.exec_command("ls -l")
    # 获取命令的输出和错误信息
    output = stdout.read().decode()
    error = stderr.read().decode()
    # 打开本地文件,以追加模式
    f = open("log.txt", "a")
    # 获取当前的本地时间,并格式化为字符串
    now = datetime.datetime.now()
    time_str = now.strftime("%Y-%m-%d %H:%M:%S")
    # 将时间信息写入文件
    f.write(time_str + "\n")
    # 将输出和错误信息写入文件
    f.write(output)
    f.write(error)
    # 刷新文件缓冲区,实时保存到本地
    f.flush()
    # 如果输出或错误信息中包含"false"字段,就打印出对应的时间信息
    if "false" in output or "false" in error:
        print("发现false字段,对应的时间是:" + time_str)
    # 计数器加1
    count += 1
    # 如果计数器达到执行的次数,跳出循环
    if count == times:
        break
    # 等待间隔时间(单位为秒)
    time.sleep(interval)
# 关闭文件
f.close()
# 关闭SSH连接
ssh.close()

你可能感兴趣的:(Python,服务器,ssh,linux)