Как получить файл с сервера в кластере во Vsphere, используя pyVmomi для удаленного (хоста) ПК - PullRequest
0 голосов
/ 20 февраля 2020

Я могу выполнить команду внутри сервера, но я хочу получить этот вывод в моем локальном p c. Я не хочу использовать s sh ключи. Я хочу использовать только имя пользователя и пароль хоста, а также имя пользователя и пароль vm (сервера). Я не смог найти прямой метод для получения вывода оболочки сервера в моем p c, но этот метод кажется наполовину выполненным, как генерация и сохранение вывода на сервере, а затем получение файла с сервера. Мне трудно получить файл (sample.txt) с сервера на локальный хост (p c).

[РЕДАКТИРОВАТЬ: я могу сделать это с помощью метода via (сохранить выходные данные на сервере) а затем вернуть его обратно в локальный p c, есть ли прямой метод?)]

from pyVim import connect
from config import *
from pyVmomi import vim, vmodl
import ssl

service_instance = connect.SmartConnect(host="yyyyyyy", port=some_number,user="xxx" , pwd=pwd,sslContext=ssl._create_unverified_context())
content = service_instance.RetrieveContent()

vm = searcher.FindByIp(ip="zzzzzz", vmSearch=True)

creds = vim.vm.guest.NamePasswordAuthentication(username='root', password=vmpwd)

pm = service_instance.content.guestOperationsManager.processManager

#checks python version and stores in sample.txt in server
ps = vim.vm.guest.ProcessManager.ProgramSpec(programPath='/usr/bin/python', arguments='--version  &> sample.txt') 
res = pm.StartProgramInGuest(vm, creds, ps)
print(res) #Prints pid

1 Ответ

0 голосов
/ 20 февраля 2020

Это делает работу, но я был бы признателен, если бы кто-нибудь знал, как напрямую получить вывод команды оболочки с сервера на мой локальный p c. Этот код создает файл с выводом cmd внутри сервера и копируется в мой локальный файл p c

from pyVim import connect
from config import *
from pyVmomi import vim, vmodl
import ssl
import os
import requests

service_instance = connect.SmartConnect(host="xxxx", port=aaa,user="yyy" , pwd=pwd,sslContext=ssl._create_unverified_context())

content = service_instance.RetrieveContent()

# # Find a VM
vm = searcher.FindByIp(ip="aaaa", vmSearch=True)

creds = vim.vm.guest.NamePasswordAuthentication(username='root', password=vmpwd)

pm = service_instance.content.guestOperationsManager.processManager


#executes and saves sample.txt into server
ps = vim.vm.guest.ProcessManager.ProgramSpec(programPath='/usr/bin/python', arguments='--version  &> sample.txt')
res = pm.StartProgramInGuest(vm, creds, ps)

dest="/Users/username/Desktop/vcenter/sample.txt" #My local pc

src="/root/sample.txt" #Server's directory
fti = content.guestOperationsManager.fileManager.InitiateFileTransferFromGuest(vm, creds, src)

resp=requests.get(fti.url, verify=False)

#Writes into file
with open(dest, 'wb') as f:
        f.write(resp.content)
...