Я создал сеанс ssh для удаленного компьютера с Windows, используя JSch. На машине с Windows установлен cygwin для приема ssh от удаленного клиента. Для выполнения команд я открыл исполняемые каналы с помощью команды,
Channel channel = client_session.openChannel("exec");
Я сопоставляю общий каталог с машиной с одного канала. Поскольку тот же канал нельзя использовать для запуска другой команды, я использую другой канал того же сеанса для извлечения сопоставленных дисков.
Но я не получаю сам ранее сопоставленный диск (тот, который я сопоставил ранее в том же коде). Как сделать эти два канала синхронизированными. Код, который я использовал, приведен ниже.
Channel channel = client_session.openChannel("exec");
((ChannelExec)channel).setCommand("net use Y: \\\\\\\\share\\\\directory /USER:WORKGROUP\\\\User password");
channel.connect();
channel = client_session.openChannel("exec");
((ChannelExec)channel).setCommand("net use");
channel.connect();
Результат, который я получил после запуска,
The command completed successfully.
exit-status: 0
New connections will be remembered.
Status Local Remote Network
-------------------------------------------------------------------------------
Unavailable Y: \\share\directory Microsoft Windows Network
The command completed successfully.
exit-status: 0
Также мне нужно выполнить несколько команд в сопоставленном каталоге, основываясь на выводе предыдущей команды, мне нужно запустить еще несколько команд в том же сопоставленном каталоге. Думаю если каналы синхронизировать то проблема с запуском нескольких команд решится.
public void method()
{
Channel channel = null;
try
{
channel = client_session.openChannel("exec");
((ChannelExec) channel).setCommand("net use Y: \\\\\\\\share\\\\directory /USER:WORKGROUP\\\\User password");
channel.connect();
byte[] tmp=new byte[1024];
while(true)
{
while(in.available()>0)
{
int i=in.read(tmp, 0, 1024);
if(i<0)
break;
System.out.print(new String(tmp, 0, i));
}
if(channel.isClosed())
{
System.out.println("exit-status: "+channel.getExitStatus());
break;
}
}
}
catch (Exception e)
{
System.out.println(e.getStackTrace()[0].getLineNumber());
System.out.println(e.toString());
}
try
{
channel = client_session.openChannel("exec");
((ChannelExec)channel).setCommand("net use");
channel.connect();
byte[] tmp=new byte[1024];
while(true)
{
while(in.available()>0)
{
int i=in.read(tmp, 0, 1024);
if(i<0)
break;
System.out.print(new String(tmp, 0, i));
}
if(channel.isClosed())
{
System.out.println("exit-status: "+channel.getExitStatus());
break;
}
}
}
catch(Exception e)
{
System.out.println(e.getStackTrace()[0].getLineNumber());
System.out.println(e.toString());
}
}
shell
- person Scary Wombat   schedule 29.11.2016