Предполагая, что у вас есть сетевая структура, как это:
local machine ---X--- machine A
| |
| Z
| |
---Y---- machine B
тогда вы скачиваете через ссылку X
, а затем загрузить через ссылку Y
. Если machine A
может говорить прямо с machine B
, тогда ссылка Z
также существует. Это будет тот случай, когда оба machine A
и machine B
являются общедоступными.
Итак, вы хотите, чтобы machine A
инициировал прямую передачу изображений на machine B
. На данный момент это код, запущенный на machine A/B
, который обрабатывает передачу, поэтому вполне вероятно, что решение Python только поможет вам начать передачу.
Если вы делали это из оболочки Баш с помощью ssh
, вы можете ввести что-то вроде этого:
ssh [email protected] 'scp myfile [email protected]'
Это предполагает, что у вас есть доступ к оболочке сервера SSH на machine A
и что он имеет программу scp
установлен. Парамико полезен только для подключения к machine A
для инициирования передачи, а не для обработки самой передачи.
Нечто подобное может работать:
ssh = paramiko.SSHClient()
ssh.connect('machineA', username='user', password='passwd')
stdin, stdout, stderr = ssh.exec_command("scp '{imgpath}' [email protected]".format(
imgpath='path/to/file/on/machineA')
Update:
Если изображения обслуживаются из machine A
, но у вас нет SSH доступ входа в систему, то изображения могут быть выведены непосредственно до machine B
, выполнив вход в machine B
и выполнив команду для извлечения изображения. Для этого обычно можно использовать wget
. Таким образом, код, чтобы сделать это из localhost
может быть:
ssh = paramiko.SSHClient()
ssh.connect('machineB', username='user', password='passwd')
stdin, stdout, stderr = ssh.exec_command("wget '{imgurl}'".format(
imgurl='http://url.to.image/file')
Для тестирования, просто пропустите использование paramiko и использовать SSH/Wget непосредственно.
Это отличный ответ, но он не решает точную цель. Предположим, у меня есть URL-адрес случайного изображения, что я сейчас делаю, загружая изображение, а затем загружаю его. Как удалить эту загрузку на мою локальную фазу? – Hick
Обычно я настраиваю целевой сервер с помощью простой веб-страницы, которая принимает URL-адрес случайного изображения, а затем записывает сценарии в d/l изображение в определенную папку. –
@Hick Если у вас нет доступа для входа в систему, на которой находятся изображения, вы можете войти в систему «машина B» и вытащить изображение непосредственно с сервера изображений. Я обновил свой ответ с некоторыми деталями. Не уверен, что это то, о чем вы просите. –