You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@commons.apache.org by "StompDagger1@yahoo.com" <st...@yahoo.com> on 2010/12/21 18:39:02 UTC
org.apache.commons.net.bsd.RLoginClient doesn't flush output
hello, I have a java program which connects to a unix account and needs to run
some local scripts, the code looks like this:
RLoginClient connection=new RLoginClient();
String lUser=System.getProperty("user.name"),lHost;
try {
lHost=InetAddress.getLocalHost().getHostName();
RExecClient rExecClient=new RExecClient();
rExecClient.connect(this.mHost);
rExecClient.rexec(this.mUser,this.mPasswd,"if [ -f
"+'"'+".rhosts"+'"'+" ]; then cp .rhosts .rhosts.bak; fi; echo "+'\"'+lHost+"
"+lUser+"\n"+lHost+".amdocs.com "+lUser+"\n"+lHost+".corp.amdocs.com
"+lUser+'"'+" >> ~/.rhosts");
rExecClient.disconnect();
connection.connect(this.mHost);
connection.rlogin(lUser,this.mUser,"xterm");
}
catch (SocketException e) {
...
}
catch (IOException e) {
try {
connection.disconnect();
}
catch (IOException f) {
...
}
OutputStreamWriter virtualKeyboard=new
OutputStreamWriter(connection.getOutputStream());
InputStreamReader virtualScreen=new
InputStreamReader(connection.getInputStream());
try {
virtualKeyboard.write("if [ ! -d installer ]; then mkdir installer;
chmod 755 installer; fi;".toCharArray());
virtualKeyboard.flush();
the first rexec works and the command gets executed, but the two last lines get
executed but on the unix side, I cannot see the output e.g. the folder, copying
the line as is and running it in unix works.
this leads me to believe that the buffer doesn't get flushed.
how can I fix this?
I'm using latest jars from site and java 1.6 update 14.
thanks.
: " , ".
An wise Scandinavian old man once said: "in the end, everything is going to be
alright"