【问题标题】:How to delete a remote file using ssh?如何使用 ssh 删除远程文件?
【发布时间】:2023-03-23 08:19:01
【问题描述】:

我正在做一个项目,我们使用 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 连接时,我之前的结果也来了。所以我做了@ 987654323@ 。但它不起作用。

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

【问题讨论】:

  • 尝试'$stream = ssh2_exec($ssh, 'rm -f /home/nsadmin/file_scanned');'
  • @amit_183 file_scanned 是普通文件。

标签: php file ssh rm


【解决方案1】:

我可以说权限可能有问题,

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

$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');

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-05
    • 2014-09-29
    • 2015-01-23
    • 1970-01-01
    相关资源
    最近更新 更多