嘗試使用此方法發送多個命令通過shell.This致力於通過JSCH客戶端SSH
Channel channel=session.openChannel("shell");
OutputStream ops = channel.getOutputStream();
PrintStream ps = new PrintStream(ops, true);
channel.connect();
ps.println("mkdir folder");
ps.println("dir");
//give commands to be executed inside println.and can have any no of commands sent.
ps.close();
InputStream in=channel.getInputStream();
byte[] bt=new byte[1024];
while(true)
{
while(in.available()>0)
{
int i=in.read(bt, 0, 1024);
if(i<0)
break;
String str=new String(bt, 0, i);
//displays the output of the command executed.
System.out.print(str);
}
if(channel.isClosed())
{
break;
}
Thread.sleep(1000);
channel.disconnect();
session.disconnect();
}
嗨。感謝您的重播,但是這些命令會立即被一一發送。但我想要的是發送命令,比如'cp',然後讀取輸出,一旦輸出包含'你想重寫文件嗎?我發送響應'Y',這是可能的,我能夠讀取和分析響應,但我不能發送響應,以便在問題提供的背景下理解它,如果我使用'shell.exec(「Y」);'它會給出錯誤。 (我知道你可以使用標誌覆蓋所有,但我必須每次詢問用戶)。 – user2570174
我認爲你所要求的是不可能的,因爲這些功能只能用於命令而不能用於用戶輸入。 – krishna
好吧,也許有可能運行隱藏在後臺的終端外殼,併發送輸入,就好像用戶在真實shell中鍵入它一樣,這可能嗎? – user2570174