0

我有一个 FTPS 站点,我需要每晚将文件传输到该站点。我的问题是该站点托管在承包商的站点(承包商 A)上,并且将文件发送到站点的 SSIS 包是由另一个承包商(承包商 B)创建/维护的。

我的问题是文件传输没有发生。我的每个承包商都将问题归咎于对方,而问题由我来确定。承包商 B 说他的 SSIS 包只在白天测试时工作,但在需要时无法在晚上连接。承包商 A 声称 FTPS 站点没有任何变化会导致这种情况。

我可以创建一个 .NET 服务来执行此操作,但希望有一个更简单的解决方案。我打算创建一个 Windows 任务,它每 5 分钟执行一次 bat 文件,并使用 MS ftp 客户端。但是,我无法让它与 FTPS 一起使用。我也无法获取与 url 一起发送的用户名和密码。这里的任何帮助将不胜感激。我整个早上都在谷歌上,发现了多个几乎可以工作的例子,但没有什么能让我一路走好。

任何使用 Explicit FTP over TLS 并允许传递用户名和 pw 的简单命令行测试就足够了。

4

2 回答 2

2

WinSCP可编写脚本的,即使对于FTPS也是如此。

于 2012-11-29T16:12:15.163 回答
2

要定期检查服务是否可以访问,一个简单的 telnet 就足够了。你甚至不必说 ftp。如果您真的想上传文件,那么最简单的方法是使用脚本使用的 ftp 命令行客户端。脚本可以是任何语言,没关系。

也可能值得探索checktls服务。它允许测试 tls 连接,您可以一起单击命令列表。在这种情况下,经典的 ftp 命令如 'USER: someone' 和 'PASS: somepass' 等等。


Filezilla 客户端提供指定显式或隐式 tls 的使用。从FileZilla Wiki的描述中:

显式与隐式 FTPS

FTPS (SSL/TLS) 以两种不兼容的模式提供服务。如果使用显式 FTPS,客户端连接到普通 FTP 端口并显式切换到具有“AUTH TLS”的安全 (SSL/TLS) 模式,而隐式 FTPS 是一种旧式服务,从一开始就采用 SSL/TLS 模式连接(通常侦听 TCP 端口 990,而不是 21)。在 FileZilla 客户端中,这意味着使用“FTPES://”为主机添加前缀以连接“显式”FTPS 服务器,或为旧版“隐式”服务器添加“FTPS://”(您可能还需要设置端口到 990)。


这是一个使用 phps cURL 扩展的 cURL 解决方案:

// $handle: the file to upload
$handle  = fopen ( $path, 'r' );
// $url: the ftps url to connect to (without credentials)
$url     = sprintf ( 'ftps://%s/%s', $server, $filename ); 
// the ftp connection
$session = curl_init ( ); 
// connection details
curl_setopt ( $curl_session, CURLOPT_URL, $url );
curl_setopt ( $curl_session, CURLOPT_USERPWD, sprintf( '%s:%s', $user, $pass );
curl_setopt ( $curl_session, CURLOPT_SSL_VERIFYPEER, FALSE );
curl_setopt ( $curl_session, CURLOPT_SSL_VERIFYHOST, FALSE );
curl_setopt ( $curl_session, CURLOPT_FTP_SSL, CURLFTPSSL_TRY );
curl_setopt ( $curl_session, CURLOPT_FTPSSLAUTH, CURLFTPAUTH_TLS );
curl_setopt ( $curl_session, CURLOPT_UPLOAD, 1 );
curl_setopt ( $curl_session, CURLOPT_INFILE, $handle );
// execute the connection
$output = curl_exec  ( $session );
// check for errors
$error  = curl_errno ( $session );
// close connection
curl_close ( $session );

这种方法的优点是:您可以将其自动化。例如,将其称为 cron 作业。

于 2012-12-03T15:31:43.747 回答