Я пытаюсь скопировать журналы (файлы всех подпапок) из OSWatcher на конкретную дату с сервера базы данных.у нас есть что-то вроде этого: из windows мы используем putty для подключения к серверу Jump, а затем с сервера Jump Server делаем ssh на конкретный сервер (производственная среда)
я использую stdin, stdout, stderr = ssh_client.exec_command ("ps -ef | grep -i osw | awk '{print $ 11}' \ n"), чтобы вывести список папок из архивной папки OSW, и мне нужно сохранить его в списке, а затем перейти к каждой подпапке и скопироватьимена файлов внутри другого списка для итерации.
output = client.run_command ('ls -ltrh / tmp /', sudo = True) для строки на выходе ['fsehlp04']. stdout: print (line) print(вывод) "" "
import paramiko
import getpass
ip = input("Please enter hostname: ")
name = input("Please enter UserName: ")
password = getpass.getpass('password: ')
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(hostname=ip,username=name,password=password)
remote_connection = ssh_client.invoke_shell()
remote_connection.send("ssh <host_name>\n")
#output = remote_connection.recv(500)
time.sleep(3)
remote_connection.send("<password>\n")
#output = remote_connection.recv(500)
time.sleep(3)
#remote_connection.send(" ps -ef|grep -i osw | grep -o '/dbscripts/oracle/osw/archive' \n")
stdin, stdout, stderr = ssh_client.exec_command("ps -ef|grep -i osw | grep -o '/dbscripts/oracle/osw/archive'\n")
time.sleep(3)
result = stdout.read().decode('ascii').strip("\n")
#print(type(result))
#print("************************************************\n")
li = list(result.split("\n"))
path=li[0]
remote_connection.send("cd "+path+"\n")
#print(result)
#print(li)
time.sleep(2)
remote_connection.send("pwd\n")
time.sleep(2)
remote_connection.send("ls -lrth|awk '{print $9}'\n")
вывод этой команды (списокподпапки) необходимо сохранить в списке, а затем перейти к каждой подпапке, скопировав имена файлов в другие списки.
Я пытаюсь сделать это следующим образом:
stdin, stdout, stderr = ssh_client.exec_command("ls -lrth|awk '{print $9}'\n") --> this is pointing to the same location on the jump server.(i thinks channel is different)
result = stdout.read().decode('ascii').strip("\n")
li = list(result.split("\n"))
после многих статейздесь, но я не получаю желаемый результат для:
remote_connection.send("ls -lrth|awk '{print $9}'\n")
if remote_connection.recv_ready():#clearing the buffer
output = remote_connection.recv(10240)
у меня должен быть один список с 9 именами подпапок для OSWatcher и 9 списками, содержащими имена этих подпапок независимо друг от друга.
Спасибо за все предложения в Advance.