[英]How to pass a password to Runtime.exec
我想下载svn数据,不幸的是它在svn + ssh url上,因此我必须始终输入密码。 要通过一个程序调用获得所有版本,我想跳过密码输入。 为此,我需要输入skript的密码,因此至少我不能使用简单的shell skript来完成此操作,因此尝试了Java。 我实际写的方法看起来像这样:
public static void main(String args[]) throws InterruptedException,
IOException {
String user = args[0];
String passwd = args[1];
String url = args[2];
String command = "svn checkout svn+ssh://" + user + "@" + url;
Process p = Runtime.getRuntime().exec(command);
System.out.println("Start");
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(
p.getOutputStream()));
BufferedReader inp = new BufferedReader( new InputStreamReader(p.getInputStream()) );
BufferedReader stderr = new BufferedReader(new InputStreamReader( p.getErrorStream ()));
String line = "";
System.out.println("Waiting...");
while ( line!=null)
{
Thread.sleep(100);
if ( inp.ready())
{
line = inp.readLine();
System.out.println("Line: " + line);
}
if ( stderr.ready())
{
line = stderr.readLine();
System.out.println("Line: " + line);
}
}
out.write(passwd + '\n');
out.write(passwd + '\n');
p.waitFor();
}
不幸的是,这不起作用。 我什至没有在输出中得到Password-Enter-Thing,它只写在控制台上。 有人知道如何通过密码吗?
我一直在搜索,但是答案是“也要读取粗壮的东西(我已经在读它了)或通过--password为svn设置密码,在我的情况下不起作用。有人知道如何解决此问题吗?
最好的问候DaGeRe
svn
命令直接打开与控制台的连接,以确保它与真实用户通话。 这样做是为了保护用户,以防他/她通过一些偷偷摸摸的密码获取器来运行命令。 Java Process
东西不能覆盖此机制,因为它直接发生在svn
命令和操作系统之间。
我认为您应该坚持使用--password
( 如何/为什么对您不起作用? ),或者改用公共密钥身份验证。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.