要定期检查服务是否可以访问,一个简单的 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 作业。