2016-10-24 3 views
0

Моя цель - дистанционно запустить команду с использованием библиотеки JSch JCraft. Ниже приведен фрагмент кода. Я получаю java.net.ConnectException. Моя скрытая цель заключается в том, чтобы удаленно запускать пакетный файл из моей системы.ConnectException при удаленном выполнении через JSch

Код сниппета:

String command = "ipconfig"; //Or any execution command 
String host = "10.10.*.*"; 
String user = "username"; 
String password = "password"; 

JSch jsch = new JSch(); 
Session session = jsch.getSession(user, host, 22); 

Properties config = new Properties(); 
config.put("StrictHostKeyChecking", "no"); 
session.setConfig(config);; 
session.setPassword(password); 
session.connect(); 
session.setHost(host); 

UserInfo userInfo = new MyUserInfo(); 
session.setUserInfo(userInfo); 
Channel channel = session.openChannel("exec"); 

((ChannelExec)channel).setCommand(command); 
channel.setInputStream(null); 
((ChannelExec)channel).setErrStream(System.err); 

InputStream input = channel.getInputStream(); 
channel.connect(); 

System.out.println("Channel Connected to machine " + host + " server with command: " + command); 


try{ 
    InputStreamReader inputReader = new InputStreamReader(input); 
    BufferedReader bufferedReader = new BufferedReader(inputReader); 
    String line = null; 

    while((line = bufferedReader.readLine()) != null){ 
     System.out.println(line); 
    } 
    bufferedReader.close(); 
    inputReader.close(); 

Ошибка:

com.jcraft.jsch.JSchException: java.net.ConnectException: Connection timed out: connect 
at com.jcraft.jsch.Util.createSocket(Util.java:349) 
at com.jcraft.jsch.Session.connect(Session.java:215) 
at com.jcraft.jsch.Session.connect(Session.java:183) 
at RemoteExecution.execute(RemoteExecution.java:125) 
at PutFilesToUnix.main(PutFilesToUnix.java:127) 
Caused by: java.net.ConnectException: Connection timed out: connect 
at java.net.DualStackPlainSocketImpl.connect0(Native Method) 
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source) 
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) 
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) 
at java.net.AbstractPlainSocketImpl.connect(Unknown Source) 
at java.net.PlainSocketImpl.connect(Unknown Source) 
at java.net.SocksSocketImpl.connect(Unknown Source) 
at java.net.Socket.connect(Unknown Source) 
at java.net.Socket.connect(Unknown Source) 
at java.net.Socket.<init>(Unknown Source) 
at java.net.Socket.<init>(Unknown Source) 
at com.jcraft.jsch.Util.createSocket(Util.java:343) 
... 4 more 
+0

Можете ли вы подключиться к '10.10. *. *' С той же машины, используя автономный клиент SSH? –

+0

Ваш код разбивается на попытку подключения. Убедитесь, что вы можете подключаться к тем же учетным данным с помощью PuTTY вручную. –

+0

Да, я могу получить ответ, когда я ping IP из cmd. Простите мою наивность, если это не то, о чем вы просили. –

ответ

0

Я не вижу тайм-аут тайм-аут соединения/сеанса свойства в коде. Попытайтесь добавить параметр тайм-аута сеанса, вероятно, это поможет. Не уверен, что вы не установите этот параметр, как долго соединение может ждать подключения. Также попробуйте загрузить любые клиенты с открытым исходным кодом и посмотреть, можете ли вы вручную подключиться.

+0

Прохладный! Большое спасибо! –

+0

Если это сработало, можете ли вы проголосовать? – ssanrao

Смежные вопросы