IT序号网

php之如何使用ssh删除远程文件

linjiqin 2025年05月04日 编程语言 114 0

我正在开发一个项目,我们使用 2 个虚拟机,其中一个用作本地虚拟机,可以访问,并且我们需要从该本地虚拟机访问远程虚拟机。在处理此问题时,我遇到了一个问题。目录中的远程目录中有一个文件。每次执行脚本时,该文件都会加载新数据,但我不需要它。我希望该文件是每次在我的脚本执行之前都删除。

我已经给出了下面的代码。

if($ssh = ssh2_connect('192.168.150.85', 22)) { 
     if(ssh2_auth_password($ssh, 'someUserName', 'somePassword')) { 
         $stream = ssh2_exec($ssh, "python file_scanner.py /home/nsadmin/$file_name"); 
         $stream = ssh2_exec($ssh, 'rm /home/nsadmin/file_scanned'); 
         stream_set_blocking($stream, true); 
         $data = ''; 
         while($buffer = fread($stream, 4096)) { 
             $data .= $buffer; 
         } 
         fclose($stream); 
         echo $data; // user 
     } 
 } 

在这里我们可以看到,在 ssh 连接之后,我执行了一些脚本,并且该文件的结果被附加到文件 file_scanned 中。但是当我执行 ssh 连接时,我之前的结果也会出现所以我做了 $stream = ssh2_exec($ssh, 'rm/home/nsadmin/file_scanned'); 。但它不起作用。

有关如何更改或修改我的脚本的任何建议,以便我可以在执行上一个命令后删除该文件。

请您参考如下方法:

可能存在权限问题,我可以说,

但这是您可以尝试的解决方案。

$connection = ssh2_connect('shell.example.com', 22); 
ssh2_auth_password($connection, 'username', 'password'); 
$sftp = ssh2_sftp($connection); 
$stream = ssh2_sftp_unlink($sftp, '/home/nsadmin/file_scanned'); 

这是常见的事情,我们用它来删除远程文件。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!