下面是一个使用Python实现的程序,可以实现你描述的功能:通过SSH连接服务器并重启服务器,然后循环尝试连接服务器,如果连接成功则退出,如果超过3次连接失败则退出。
首先,请确保你已经安装了`paramiko`库,它是一个用于SSH连接的Python库。你可以使用`pip install paramiko`命令进行安装。
import time
import paramikodef connect_ssh(hostname, port, username, password):client = paramiko.SSHClient()client.set_missing_host_key_policy(paramiko.AutoAddPolicy())try:client.connect(hostname=hostname, port=port, username=username, password=password)print("SSH连接成功!")return clientexcept Exception as e:print(f"SSH连接失败:{e}")return Nonedef reboot_server(client):try:_, stdout, _ = client.exec_command("reboot")stdout.channel.recv_exit_status()print("服务器重启中...")except Exception as e:print(f"重启服务器失败:{e}")def check_server_status(hostname):max_retries = 3 # 最大重试次数retries = 0connected = Falsewhile retries < max_retries:try:# 尝试连接服务器ssh = connect_ssh(hostname, 22, "your_username", "your_password")if ssh is not None:ssh.close()print("成功连接到服务器!")connected = Truebreak # 连接成功,跳出循环else:retries += 1time.sleep(10) # 连接失败,等待10秒后重试except Exception as e:print(f"连接服务器失败:{e}")retries += 1time.sleep(10) # 连接失败,等待10秒后重试if not connected:print(f"连接服务器失败超过 {max_retries} 次,程序退出。")# 服务器信息
server_hostname = "your_server_hostname_or_ip"# SSH连接和重启服务器
print("正在连接服务器...")
ssh_client = connect_ssh(server_hostname, 22, "your_username", "your_password")
if ssh_client is not None:print("成功连接到服务器!")print("正在重启服务器...")reboot_server(ssh_client)ssh_client.close()# 循环尝试连接服务器
print("正在尝试连接服务器...")
check_server_status(server_hostname)
请注意替换以下参数:
- `your_server_hostname_or_ip`:目标服务器的主机名或IP地址。
- `your_username`:SSH连接使用的用户名。
- `your_password`:SSH连接使用的密码。
在这个示例中,我们首先通过SSH连接服务器并重启服务器,然后循环尝试连接服务器。如果连接成功,则打印成功消息并退出。如果超过3次连接失败,则打印失败消息并退出。