python 判断linux 服务器是否可以登录并获取某个路径是否可以写入成功 def check_path_accessibility(remote_host,remote_prot, remote_username, remote_password, path):
时间: 2024-04-11 16:27:47 浏览: 13
要判断 Linux 服务器是否可以登录并检查某个路径是否可写,可以使用 `paramiko` 库来实现 SSH 连接和执行命令。以下是一个示例函数:
```python
import paramiko
def check_path_accessibility(remote_host, remote_port, remote_username, remote_password, path):
try:
# 创建 SSH 客户端对象
client = paramiko.SSHClient()
# 自动添加主机密钥
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
client.connect(remote_host, port=remote_port, username=remote_username, password=remote_password)
# 执行命令检查路径是否可写
command = f'[ -w "{path}" ] && echo "可写" || echo "不可写"'
stdin, stdout, stderr = client.exec_command(command)
# 获取命令执行结果
result = stdout.read().decode().strip()
# 关闭连接
client.close()
return result == "可写"
except paramiko.AuthenticationException:
print(f"无法使用提供的用户名和密码登录到服务器 {remote_host}")
except paramiko.SSHException as ssh_exception:
print(f"SSH 连接错误: {ssh_exception}")
except Exception as e:
print(f"发生错误: {e}")
return False
# 调用函数来检查路径可写性
can_login_and_write = check_path_accessibility("服务器地址", 22, "用户名", "密码", "/要检查的路径")
if can_login_and_write:
print("可以登录且路径可写")
else:
print("无法登录或路径不可写")
```
在上面的示例中,我们定义了一个 `check_path_accessibility` 函数,它接受远程主机地址、端口、用户名、密码和要检查的路径作为参数。函数中使用 `paramiko` 库创建一个 SSH 客户端对象,并通过 SSH 连接执行命令来检查路径是否可写。如果路径可写,则返回 `True`,否则返回 `False`。在主程序中,我们调用该函数并根据返回结果打印相应的提示信息。
请确保将 "服务器地址"、端口、"用户名"、"密码" 和 "/要检查的路径" 替换为实际的服务器和路径信息。如果可以登录且路径可写,将输出 "可以登录且路径可写";如果无法登录或路径不可写,将输出 "无法登录或路径不可写"。