[英]How to run a command requiring a password through SSH with Jsch
我正在尝试使用JSch在目标主机上运行命令,我希望能够指示密码,例如:“sudo echo hello”然后输入当前用户的密码。
我不明白如何正确地与提示交互。 下面的代码显示了我尝试提供密码的两种方式,它们都会失败并显示消息:
sudo:没有tty存在且没有指定askpass程序
我正在使用这个:
JSch jsch=new JSch();
String host="192.168.0.17";
String user="xxx";
String passwd="xxx";
Session session=jsch.getSession(user, host, 22);
session.setPassword(passwd);
session.setConfig("StrictHostKeyChecking", "no");
session.connect();
ChannelExec channel=(ChannelExec)session.openChannel("exec");
channel.setCommand("sudo echo hello");
channel.setErrStream(System.err);
channel.connect();
int id = 1;
// must write on output stream?
if(id==0){
channel.getOutputStream().write(passwd.getBytes());
}
// must read on input stream?
else if(id==1){
channel.getInputStream().read(passwd.getBytes());
}
channel.disconnect();
谢谢你的建议!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.