gpt4 book ai didi

php - 使用 SFTP 和 PHP 或 shell/终端脚本传输文件

转载 作者:行者123 更新时间:2023-12-02 15:38:49 24 4
gpt4 key购买 nike

我需要编写一个每天晚上作为 cron 作业运行的脚本,通过 sftp 将一些报告文件传输到另一台服务器。

报告文件是每晚使用另一个 cron 以“support_[date].csv”和“download_[date].csv”格式创建的。

我想知道您是否对如何执行以下操作有任何指示:

  1. 查找最近[日期]创建的 2 个文件
  2. 使用 SFTP 将这些文件复制到另一台服务器

我已经尝试了几个利用 ssh2 扩展的 PHP 脚本,但没有成功。有没有办法使用 shell 脚本来做到这一点?说实话,这不是我非常熟悉的东西(因此最初选择 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);}

}

这是我收到的错误消息:

Warning: fopen() [function.fopen]: URLfile-access is disabled in the serverconfiguration in/path_to_script/sftp-test.php on line17

Warning: fopen(ssh2.sftp://Resource id

3/destination_directory_on_server/test.csv)

[function.fopen]: failed to openstream: no suitable wrapper could befound in /path_to_script/sftp-test.phpon line 17 Exception: Could not openremote file:/destination_directory_on_server/test.csv

最佳答案

使用终端查找文件的最新日期,您可以使用 ls -1tr 。然后使用 scp (不是 sftp)复制/传输文件例如,

#!/bin/bash
latest_download=$(ls -1tr download*csv | tail -1)
latest_support=$(ls -1tr support*csv | tail -1)
scp $latest_download <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="aedbddcbdceeddc1c3cbc6c1ddda80cdc1c3" rel="noreferrer noopener nofollow">[email protected]</a>:somedir # syntax from memory, check man page for correct syntax
scp $latest_support <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="d4a1a7b1a694a7bbb9b1bcbba7a0fab7bbb9" rel="noreferrer noopener nofollow">[email protected]</a>:somedir

检查 scp 的手册页以了解用法

关于php - 使用 SFTP 和 PHP 或 shell/终端脚本传输文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2317777/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com