Pythonの中でparamikoを使用してユーザーを切り替える方法はありますか?
paramikoでユーザーを切り替えるためには、invoke_shell()メソッドを使用して新しいシェルセッションに入り、コマンドを送信してユーザーを切り替えます。以下はサンプルコードです:
import paramiko
def switch_user(hostname, username, password, new_username, new_password):
# 创建SSH客户端
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接SSH服务器
client.connect(hostname, username=username, password=password)
# 打开一个新的shell会话
shell = client.invoke_shell()
# 发送切换用户的命令
shell.send(f"su - {new_username}\n")
# 等待命令执行完成
while not shell.recv_ready():
pass
# 输入新用户的密码
shell.send(f"{new_password}\n")
# 打印输出结果
while shell.recv_ready():
print(shell.recv(1024))
# 关闭连接
client.close()
# 使用示例
switch_user("192.168.0.1", "username", "password", "new_username", "new_password")
上記のコードは、paramikoを使用してSSHサーバーに接続し、invoke_shell()メソッドを使用して新しいシェルセッションに入ります。その後、send()メソッドを使用してユーザー切り替えのコマンド(su – new_username)を送信し、send()メソッドを使用して新しいユーザーのパスワードを入力します。最後に、recv()メソッドを使用して出力結果を読み取り、SSH接続を閉じます。
目標サーバーで適切な権限が設定されている必要があり、現在のユーザーが指定された新しいユーザーに切り替えることを許可するようにしてください。