python - 如何通过代码在 HDInsight 群集上运行命令?
问题描述
问题描述
我有一个HDInsight 群集实例,我使用Putty 和 CAPI Certificate与之连接。一旦我尝试连接,它会要求我输入一个特殊的 PIN 码(分配给需要在连接期间插入的卡),我需要手动输入该 PIN 码,然后我才能登录、执行命令等。但是问题是我希望有可能从我的本地机器上的代码在 HDInsight 群集上运行命令。
问题
是否有一个 Python 库可以让我从代码中做到这一点?基本上我想执行以下场景(用伪代码编写):
- 登录到 HDInsight 群集
- 执行即“ls /path/to/directory”
- 在我的本地机器上的控制台中查看上述命令的输出
非常感谢您的任何建议!
解决方案
这是我放在一起的一个最小工作示例,我可以通过 python SSH 到我的集群,并运行一些简单的 unix 和 beeline 命令。我使用了 Python 2.7,但它也应该在 3.x 中工作(只需在打印件上加上括号;))
让我知道这是否是您要找的!
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
推荐阅读
- reactjs - jsZip 用于 reactjs 中的动态值
- wordpress - 如何根据wordpress中的当前帖子自动选择一个值?
- python - Can´t excecute view action in Django
- react-router-dom - 如何让这个滑出导航菜单与 react-router 和 framer-motion 一起使用?
- arrays - for循环中有两个if语句?
- javascript - 我如何使用结构扩展我的 jsx 元素
- r - 删除纵向数据中的不连续时间点
- python - Python jupyter 网络服务器在 3-5 秒后停止
- python - 然后在条件下读取 sheet_names 列表
- python - SqlAlchemy 递归查询