1

Тема: CMD/BAT: remote ftp

Здравствуйте.
Столкнулся с такой проблемой:
Имеется моя локальная машина -> удаленная машина -> удаленный ftp-сервер.
При этом удаленный ftp сервер виден только с удаленной машины.
Мне необходимо закачать файл с локальной машины на удаленный сервер.
Соответственно, я сначала закачиваю файл на удаленную машину, а потом с нее через скрипт ftp_put.bat пытаюсь закачать на удаленный ftp-сервер.
код ftp_put.bat файла:

@Echo Off
echo user myuser> ftpcmd.dat
echo mypassword>> ftpcmd.dat
echo bin>> ftpcmd.dat
echo  cd /nandflash>> ftpcmd.dat
echo put %1>> ftpcmd.dat
echo quit>> ftpcmd.dat
ftp -n -s:ftpcmd.dat 192.168.0.123
del ftpcmd.dat

C локальной машины выполняю этот скрипт через wmi:

$cred = New-Object System.Management.Automation.PSCredential($login,$pass)
$wmi = (get-wmiobject -list -namespace root\cimv2 -computername $comp -credential $cred | where-object { $_.name -eq "Win32_Process" })
$wmi.Create("d:\arm\temp\conf\ftp_put.bat file.cfg")

Проблема в том, что файл на удаленный ftp-сервер не загружается.
При этом если я с удаленной машины запускаю скрипт, то файл загружается.
В чем причина, и как решить данную проблему.
Заранее спасибо.

2 (изменено: Rom5, 2012-05-12 22:40:45)

Re: CMD/BAT: remote ftp

Поробовали указать путь и к используемому параметром file.cfg ?
Если убрать удаление ftpcmd.dat, то можно как-то проверить, что он создается?

Кстати, после закидывания батника и file.cfg на удаленную машину сам батник попробуйте запустить вручную, предварительно зайдя телнетом на машину.
Вместо телнета можете использовать запуск процесса cmd.exe на удаленной машине, например, воспользовавшись утилитой psexec.exe (либо winrs.exe в случае Windows-7)

WBR. Roman

3

Re: CMD/BAT: remote ftp

ray пишет:

Имеется моя локальная машина -> удаленная машина -> удаленный ftp-сервер.
При этом удаленный ftp сервер виден только с удаленной машины.
Заранее спасибо.

Если в качестве обязательного требования для выполнения этой задачи не выступает использование BAT-файла, то можно сделать простой вариант решения, к примеру на языке Perl, который при желании можно скомпилировать в небольшой исполняемый файл

Логика простая: на удаленной машине запускается Perl-приложение, которые принимает соединения на N-ом TCP-порту, и готовится принять требуемый файл с локальной машины, после чего открывает процесс ftp.exe на взаимодействие, и посылает требуемые команды

open(FTP,"|ftp|"); # Или использовать функцию procopen
print FTP "user username\n";
<FTP>; # Чтение ответа от процесса, никуда не сохраняется
print FTP "password\n";
<FTP>; # Чтение ответа от процесса, никуда не сохраняется
......
И так далее требуемые команды

4

Re: CMD/BAT: remote ftp

процесс создавать с правами допущенного к фтп

Я конечно далек от мысли... (с)