Мне нужно написать скрипт, который запускается как задание cron каждую ночь, который передает некоторые файлы отчетов через sftp на другой сервер.
Файлы отчетов создаются каждую ночь с использованием другого cron в формате 'support_ [date] .csv' & 'download_ [date] .csv'.
Мне интересно, есть ли у вас указания относительно того, как сделать следующее:
- Найти 2 файла, созданные в последний [дата]
- Скопируйте эти файлы на другой сервер, используя SFTP
Я пробовал несколько сценариев PHP, использующих расширение ssh2, но безрезультатно. Есть ли способ сделать это с помощью сценария оболочки? Честно говоря, это не то, с чем я хорошо знаком (следовательно, сначала иду по пути PHP)
Это был один из моих PHP-скриптов, который не работал:
$src = 'test.csv';
$filename = 'test.csv';
$dest = '/destination_directory_on_server/'.$filename;
$connection = ssh2_connect('example.com', 22);
ssh2_auth_password($connection, 'username', 'password');
// Create SFTP session
$sftp = ssh2_sftp($connection);
$sftpStream = fopen('ssh2.sftp://'.$sftp.$dest, 'w');
try {
if (!$sftpStream) {
throw new Exception("Could not open remote file: $dest<br>");
}
$data_to_send = file_get_contents($src);
if ($data_to_send === false) {
throw new Exception("Could not open local file: $src.<br>");
}
if (fwrite($sftpStream, $data_to_send) === false) {
throw new Exception("Could not send data from file: $src.<br>");
} else {
//Upload was successful, post-upload actions go here...
}
fclose($sftpStream);
} catch (Exception $e) {
//error_log('Exception: ' . $e->getMessage());
echo 'Exception: ' . $e->getMessage();
if($sftpStream) {fclose($sftpStream);}
}
Это были сообщения об ошибках, которые я получил:
Предупреждение: fopen () [function.fopen]: URL
доступ к файлу отключен на сервере
конфигурация в
/path_to_script/sftp-test.php на линии
17
Предупреждение: fopen (ssh2.sftp: // ID ресурса
3 / destination_directory_on_server / test.csv)
[function.fopen]: не удалось открыть
поток: не может быть подходящей обертки
находится в /path_to_script/sftp-test.php
в строке 17 Исключение: не удалось открыть
удаленный файл:
/destination_directory_on_server/test.csv