JSCH setCommand 不工作
JSCH setCommand is not working
没有异常出现,命令也没有根据命令进行任何工作mentioned.Here没有创建目录权限,也没有目录created.Please给出你的建议。
更新:
添加了 channelexe.getExitStatus 但问题是它给出了 -1,这是什么意思?。我不知道如何找到一些解释为什么命令没有完成它的工作(更新 fileDir1 的 777 模式)。
String depDir = "/usr/local/FTPReceive/DEPLOYED/fileDir1";
log.info("updateDepositedFilePermission ........ starts");
Session session = new FTPComponent().getSession("");
Channel channel = null;
ChannelSftp channelSftp = null;
try
{
session.connect();
System.out.println("session is alive:" + session.isConnected());
channel = session.openChannel("sftp");
channel.connect();
channelSftp = (ChannelSftp) channel;
ChannelExec channelexe = (ChannelExec) session.openChannel("exec");
channelexe.setCommand("chmod 777 -R " + depDir);
channelexe.connect();
System.out.println("channelexe.getExitStatus:"+channelexe.getExitStatus());
}
catch (Exception e1)
{
e1.printStackTrace();
System.out.println("Manual Exception in updateDepositedFilePermission:" + CommonUtil.getExceptionString(e1));
}
channelexe.setCommand("chmod 777 -R " + depDir);
channelexe.setCommand("mkdir /usr/local/fileStore");
channelexe.connect();
A ChannelExec 接受在远程系统上调用的单个命令字符串。您对 setCommand()
的第二次调用是放弃 chmod 命令并将其替换为 mkdir 命令。假设远程 shell 是 bash 或类似的,您可以使用 shell 语法构造一个运行两个命令的命令字符串:
String cmd = "chmod 777 -R " + depDir + " && mkdir /usr/local/fileStore";
channelexe.setCommand(cmd);
No Exception comes...
ChannelExec 在命令失败时不会抛出异常。您可以调用 Channel.getExitStatus()
来获取远程命令的退出状态。如果 chmod
和 mkdir
成功,则该值为 0,如果失败则为非零。该通道还具有读取远程命令的标准错误的功能,这将允许您读取它们输出的任何错误消息。
JSCH网站有几个example programs, including an example of executing a remote command.
没有异常出现,命令也没有根据命令进行任何工作mentioned.Here没有创建目录权限,也没有目录created.Please给出你的建议。
更新: 添加了 channelexe.getExitStatus 但问题是它给出了 -1,这是什么意思?。我不知道如何找到一些解释为什么命令没有完成它的工作(更新 fileDir1 的 777 模式)。
String depDir = "/usr/local/FTPReceive/DEPLOYED/fileDir1";
log.info("updateDepositedFilePermission ........ starts");
Session session = new FTPComponent().getSession("");
Channel channel = null;
ChannelSftp channelSftp = null;
try
{
session.connect();
System.out.println("session is alive:" + session.isConnected());
channel = session.openChannel("sftp");
channel.connect();
channelSftp = (ChannelSftp) channel;
ChannelExec channelexe = (ChannelExec) session.openChannel("exec");
channelexe.setCommand("chmod 777 -R " + depDir);
channelexe.connect();
System.out.println("channelexe.getExitStatus:"+channelexe.getExitStatus());
}
catch (Exception e1)
{
e1.printStackTrace();
System.out.println("Manual Exception in updateDepositedFilePermission:" + CommonUtil.getExceptionString(e1));
}
channelexe.setCommand("chmod 777 -R " + depDir);
channelexe.setCommand("mkdir /usr/local/fileStore");
channelexe.connect();
A ChannelExec 接受在远程系统上调用的单个命令字符串。您对 setCommand()
的第二次调用是放弃 chmod 命令并将其替换为 mkdir 命令。假设远程 shell 是 bash 或类似的,您可以使用 shell 语法构造一个运行两个命令的命令字符串:
String cmd = "chmod 777 -R " + depDir + " && mkdir /usr/local/fileStore";
channelexe.setCommand(cmd);
No Exception comes...
ChannelExec 在命令失败时不会抛出异常。您可以调用 Channel.getExitStatus()
来获取远程命令的退出状态。如果 chmod
和 mkdir
成功,则该值为 0,如果失败则为非零。该通道还具有读取远程命令的标准错误的功能,这将允许您读取它们输出的任何错误消息。
JSCH网站有几个example programs, including an example of executing a remote command.