使用paramiko在远程计算机上不执行cqlsh命令

时间:2019-05-10 14:40:55

标签: python paramiko

使用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的示例都将很有帮助。

2 个答案:

答案 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上没有输出,通常是因为该命令甚至无法启动。

阅读stderrstderr.readlines())来检查是否有错误。


错误经常是 not found” 。为此,请参见
Some Unix commands fail with "<command> not found", when executed using Python Paramiko exec_command