Использование paramiko без выполнения команды cqlsh на удаленной машине - PullRequest
0 голосов
/ 10 мая 2019

Использование 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 с аутентификацией на основе ключей.Любой пример, работающий для подключения к Cassandra vm, который имеет аутентификацию на основе ключей, будет очень полезным.

Ответы [ 2 ]

0 голосов
/ 13 мая 2019

Если вы не получаете вывод на stdout, обычно это происходит потому, что команда даже не запускается.

Считайте stderr (stderr.readlines()), чтобы проверить наличие ошибок.


Довольно часто ошибка " not found" . Об этом см.
Некоторые команды Unix завершаются с ошибкой " not found", когда они выполняются с использованием Python Paramiko exec_command

0 голосов
/ 10 мая 2019

Не уверен, что это сработает для вас, но вот что работает для меня.Я только предоставляю код от создания клиента к соединению.Также убедитесь, что 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)
...