Мое требование - подключиться к какому-либо сеансу с использованием прокси и выполнить некоторую команду в этом сеансе.Я написал Python-код для подключения SSH вместе с прокси-подключением, он работает нормально.После подключения мы выполняем команду.Когда мы выполнили команду df
, она работает нормально и показывает результат.Но когда выполняется какая-то команда, связанная с проектом bch -c 142717 -M sim -S 2019-02-01:00:00:00
, она не работает.
Когда мы выполнили команду, упомянутую выше, она имеет очень длинный вывод с несколькими страницами.Но вручную, когда мы выполнили вышеупомянутую команду в сеансе, она работает нормально.
import subprocess
import openpyxl
import os
import paramiko
import socks
import datetime
import sys
import time
#reload(sys)
#sys.setdefaultencoding('utf8')
ssh = ""
# sftp_client = none
host='10.64.167.69'
port=22
username='bscs1'
password='3ricss0n'
proxyHost='127.0.0.1'
proxyPort='1080'
def CL_Open_SSHConnection_With_Proxy(host, port, username, password, proxyHost, proxyPort):
port = int(port)
proxyPort = int(proxyPort)
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, proxyHost, proxyPort, False)
paramiko.client.socket.socket = socks.socksocket
SERVER_ENCODING = "utf-8"
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname=host, port=port, username=username, password=password)
chan = ssh.invoke_shell()
chan.settimeout(0)
print "Server Connected"
socks.setdefaultproxy()
print ssh
return ssh
def CL_execute_comand(con, sshcmd):
print "CL_execute_comand"
print con
stdin, stdout, stderr = con.exec_command(sshcmd)
print 'executed'
print stdout
opt = stdout.readlines()
opt = "".join(opt)
print(opt)
def CL_Close_Connection(ssh1):
time.sleep(5)
ssh1.close()
sshcmd = 'bch -c 142717 -M sim -S 2019-02-01:00:00:00'
variable = CL_Open_SSHConnection_With_Proxy(host, port, username, password, proxyHost, proxyPort)
variable2 = CL_execute_comand(variable, sshcmd)
print variable2
CL_Close_Connection(variable)
вывод:
<paramiko.ChannelFile from <paramiko.Channel 1 (closed) -> <paramiko.Transport at 0x2b27f28L (cipher aes128-ctr, 128 bits) (active; 0 open channel(s))>>>