使用Parmiko尝试登录到远程计算机并执行cqlsh命令,但是它不起作用
我尝试使用paramiko在远程计算机上执行cqlsh命令,但未得到任何结果。 我也尝试了dse.cluster,但是使用错误的凭据获取AuthenticationFailed。凭据仅是正确的,所有实验室机器都经过基于文件的身份验证。
import paramiko
hostname = '10.XX.XX.XX'
username = 'root'
gSSHkey = 'D:\\LoginKeys\\login-id_rsa-key.ppk'
#cmds = ["cqlsh -u casadmin -pmotive 10.XX.XX.XX 9042 -k casadmin", "select count(*) from dia_scs_config ;"]
sshcon = paramiko.SSHClient() # will create the object
sshcon.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # no known_hosts error
sshcon.connect(hostname=hostname, username=username, key_filename=gSSHkey) # no passwd needed
for i in range(len(cmds)):
stdin, stdout, stderr = sshcon.exec_command(cmds[i])
output = stdout.readlines()
print(output)
for line in output:
print(line)
sshcon.close()
++++++++++++++++++++++++++++++++++++++++++++++ ===
from dse.cluster import Cluster
from dse.auth import PlainTextAuthProvider
auth_provider = PlainTextAuthProvider(
username='casadmin', password='casadmin')
cluster = Cluster(contact_points=['10.XX.XX.XX'],
port=9042, auth_provider=auth_provider)
session = cluster.connect('casadmin')
print ("connected")
print (session.execute("select count(*) from dia_scs_config")[0])
尝试连接到具有基于密钥的身份验证的Cassandra VM。 任何可以通过基于密钥的身份验证连接到Cassandra vm的示例都将很有帮助。
答案 0 :(得分:0)
不确定这是否对您有用,但这是对我有用的。我只提供从客户端创建到连接的代码。另外,请确保允许root远程连接。
sshcon = paramiko.SSHClient() # will create the object
sshcon.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # no known_hosts error
key = paramiko.RSAKey.from_private_key_file(gSSHkey)
sshcon.connect(hostname, username=username, pkey=key, look_for_keys=False)
答案 1 :(得分:0)
如果stdout
上没有输出,通常是因为该命令甚至无法启动。
阅读stderr
(stderr.readlines()
)来检查是否有错误。
错误经常是“
Some Unix commands fail with "<command> not found", when executed using Python Paramiko exec_command