在 Airflow SSHHook 中,当使用 ssh_client 方法时,可能会因为需要用户输入而导致程序被阻塞。解决这个问题的方法是使用 Paramiko 的 AutoAddPolicy 类,它可以在遇到新的 SSH 主机时自动添加主机密钥。
以下是使用 AutoAddPolicy 类解决 Airflow SSHHook 提示需要用户输入的示例代码:
from airflow.contrib.hooks.ssh_hook import SSHHook
import paramiko
# 创建一个 SSHHook 并连接到远程主机
ssh_hook = SSHHook(ssh_conn_id='my_ssh_conn')
ssh_client = ssh_hook.get_conn().get_transport().open_session()
# 添加自动添加主机密钥的策略
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 向远程主机发送一些命令
ssh_client.exec_command('ls')
ssh_client.exec_command('pwd')
通过使用 AutoAddPolicy 类,可以在遇到新的主机时自动添加主机密钥,减轻用户交互的负担,从而避免程序被阻塞。