当前位置: 首页 > 知识库问答 >
问题:

使用JSch时重命名命令不起作用

鄢选
2023-03-14
ChannelExec execChannel = null;
try {
  execChannel = (ChannelExec) session.openChannel("exec");
  execChannel.connect();
  execChannel.setCommand("rename dir1 dir2");
  execChannel.start();
} catch (JSchException ex) {
  throw new IOException(ex);
} finally {
  if (execChannel != null) {
    execChannel.disconnect();
  }
}
    null

共有1个答案

刁冠宇
2023-03-14

您很可能执行了错误的命令。如果您正在连接到Linux,则要使用的命令是mv

但是,您不应该将shell命令用于琐碎的文件操作,如创建和删除目录以及重命名文件/目录。这是一个非常脆弱的方法。

相反,使用SSH的标准文件管理API,SFTP(channelsftpJSch中)。

ChannelSftp sftpChannel = (ChannelSftp) session.openChannel("sftp");
sftpChannel.connect();

sftpChannel.mkdir("/path/dir1")
sftpChannel.rename("/path/dir1", "/path/dir2");
sftpChannel.rmdir("/path/dir2");
 类似资料:
  • 我只是在Windows中安装jdk和jre版本8。环境变量已设置。我尝试在cmd中运行“java-version”,它显示了安装的java版本。但是当我尝试用“javac projectname”编译java项目时,系统说javac不能被识别为内部命令或外部命令。有谁能告诉我怎么修好它吗? 下面是我的环境变量: C:\users\foody>echo%路径%C:\ProgramData\Oracl

  • 我使用ubuntu 14.04,当我在终端上使用节点hello.js命令时,什么都不会发生。我使用sudo apt-get命令安装了这些包。我不知道出了什么问题。没有错误消息或任何东西。我寻找我的问题,但什么也没找到。

  • 为什么/我的目标: 我有一个由pi组成的小型网状网络,每天大部分时间都在运行脚本。我想取消停机时间,但是代码有时会在连续循环3-4天后停止工作,(有时长达一周,代码才会出现错误并停止)。 每个节点上运行的脚本用“最后签入”字段更新mySQL数据库。 我希望用Java编写一个小型后台程序,它将在我的服务器上无限期运行,时不时地检查每个站点的“最后签入”,如果它注意到一个节点宕机,远程ssh进入该节点

  • 我正在尝试通过远程Java web应用程序在WLST上运行restart server命令。 这就是我试图执行的: 我在用“;”要分离命令,因为我认为需要运行多个命令。 不幸的是,它在第2行给出了一个语法错误。 bash:-c:line 0:意外标记附近的语法错误/u01/app/oracle/jdk1。8.0_65/bin//java-cp/u01/app/oracle/product/orac

  • 问题内容: 我正在运行Ubuntu 10.10 64位。我安装了ia32-libs以及Android Debug Bridge版本1.0.26。 我的问题: >>> ???????????? 没有权限 >>>> sudo:adb:找不到命令 >>>错误:设备权限不足 我想这些都有关。这是相关信息。 使用运行CM6.1的植根Moto Droid和运行基于CM7的ROM植根的G-Tab,可以得到相同的

  • 我试图在一个网站上使用gettext,为此我遵循O'Reilly媒体教程。在第一页的末尾,它说我需要使用命令,但是我的命令行返回以下内容:我在XAMPP上运行我的网站,所以我的整个目录是这样的: 我有考试。php在gettext文件夹中,以及消息。采购订单位于文件夹中。即使我尝试使用poedit,它也不起作用。这是我的测验。php代码: 我不确定bindtextdomain函数中的字符串是否正确。