Python 如何从代码在HDInsight集群上运行命令? 问题描述
我有一个使用Putty和CAPI证书连接的HDInsight cluster实例。一旦我尝试连接,它会要求我输入一个特殊PIN码(分配给连接过程中需要插入的卡),我需要手动输入,然后才能登录,执行命令等。但问题是,我希望能够从本地计算机的代码中在HDInsight cluster上运行命令 问题: 是否有一个Python库可以让我从代码中执行它? 基本上,我希望执行以下场景(用伪代码编写):Python 如何从代码在HDInsight集群上运行命令? 问题描述,python,azure,putty,azure-hdinsight,Python,Azure,Putty,Azure Hdinsight,我有一个使用Putty和CAPI证书连接的HDInsight cluster实例。一旦我尝试连接,它会要求我输入一个特殊PIN码(分配给连接过程中需要插入的卡),我需要手动输入,然后才能登录,执行命令等。但问题是,我希望能够从本地计算机的代码中在HDInsight cluster上运行命令 问题: 是否有一个Python库可以让我从代码中执行它? 基本上,我希望执行以下场景(用伪代码编写): 登录到HDInsight群集 执行,即“ls/path/to/directory” 在我的本地计算机上的
非常感谢您的建议 下面是一个最简单的工作示例,我可以通过python将SSH连接到集群中,并运行一些简单的unix和beeline命令。我使用了Python2.7,但它也应该可以在3.x中使用(只需在打印上加上括号;) 让我知道这是否是你要找的!
导入子流程
导入操作系统
导入时间
clusterConnection=“sshpass-e ssh@-ssh.azurehdinsight.net”
env=os.environ.copy()
环境['SSHPASS']='
sshProc=subprocess.Popen(clusterConnection.split(),stdin=subprocess.PIPE,stdout=subprocess.PIPE,env=env)
时间。睡眠(3)
sshProc.stdin.write(“ls/\n”)
sshProc.stdin.write(“echo'Hello!'\n”)
write(“beeline-u'jdbc:hive2://localhost:10001/;transportMode=http'-e'show tables'>test.txt”)
sshProc.stdin.write(“cat test.txt\n”)
sshProc.stdin.close()
对于sshProc.stdout中的行:
打印行
import subprocess
import os
import time
clusterConnection = "sshpass -e ssh <cluster_user>@<cluster_name>-ssh.azurehdinsight.net"
env = os.environ.copy()
env['SSHPASS'] = '<cluster_pass>'
sshProc = subprocess.Popen(clusterConnection.split(), stdin=subprocess.PIPE, stdout=subprocess.PIPE, env=env)
time.sleep(3)
sshProc.stdin.write("ls /\n")
sshProc.stdin.write("echo 'Hello!'\n")
sshProc.stdin.write("beeline -u 'jdbc:hive2://localhost:10001/;transportMode=http' -e 'show tables' > test.txt\n")
sshProc.stdin.write("cat test.txt\n")
sshProc.stdin.close()
for line in sshProc.stdout:
print line