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接続を閉じます。

目標サーバーで適切な権限が設定されている必要があり、現在のユーザーが指定された新しいユーザーに切り替えることを許可するようにしてください。

bannerAds