powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / скачать файл
12 сообщений из 12, страница 1 из 1
скачать файл
    #38446402
Ping333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Подскажите пожалуйста, требуется стянуть конфигурационной файл с оборудования. Пробую делать это так
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
try{
String cmd = "scp -p admin@172.30.9.3:/etc/cfg.or /usr/local/";
Process p = Runtime.getRuntime().exec(cmd);
InputStream inCmd = p.getInputStream();
InputStream errCmd = p.getErrorStream();

BufferedReader outReader = new BufferedReader(new InputStreamReader(inCmd, "Cp866"));
String line;
while ((line = outReader.readLine ()) != null) { //считываем поток выхода
    System.out.println (line);
  }
outReader.close();
BufferedReader errReader = new BufferedReader(new InputStreamReader(errCmd, "Cp866"));
while ((line = errReader.readLine ()) != null) { //считываем поток ошибок
    System.out.println (line);
    }
errReader.close();
inCmd.close();
errCmd.close();

   }catch (Exception e)
{System.out.println("Error - " + e.toString());}


результат
Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,password,keyboard-interactive).

проблема в том что после соединения, в консоли запрашивается пароль

root@ubuntu:# scp -p admin@172.30.9.3:/etc/cfg.or /usr/local/
admin@172.30.9.3's password:
Permission denied, please try again.

как пароль послать чтобы скачать файл?
...
Рейтинг: 0 / 0
скачать файл
    #38446414
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пишите пароль в p.getOutputStream();
Используйте ProcessBuilder.
Используйте redirect для потока ошибок, чтобы не дублировать чтение InputStream и ErrorStream
Используйте redirect потоков в System.out (только в Java 7, кажется), чтобы не нужно было чтение и запись реализовывать в отдельных нитях (Thread).
...
Рейтинг: 0 / 0
скачать файл
    #38446558
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Там кажется через ключик -p можно пароль передать. Вот тут пишут
http://serverfault.com/questions/318474/how-to-pass-password-to-scp-command-used-in-bash-script
...
Рейтинг: 0 / 0
скачать файл
    #38446569
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ещё не понятно, почему бы и не взять pure Java реализацию
http://www.jcraft.com/jsch/examples/ScpFrom.java.html
вместо запуска OS команды?
...
Рейтинг: 0 / 0
скачать файл
    #38446834
Ping333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо!
использовал sshpass
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
ProcessBuilder p = new ProcessBuilder("sshpass","-p","password","scp","-p","admin@172.30.9.3:/etc/config/cfg.or","/usr/local/");  
p.redirectErrorStream(true);
Process process = p.start();
InputStream stdout = process.getInputStream();
InputStreamReader isrStdout = new InputStreamReader(stdout);
BufferedReader brStdout = new BufferedReader(isrStdout);
  String line = null;
  while((line = brStdout.readLine()) != null) {
System.out.println(line);}
brStdout.close();
brStdout.close();


как использовать getOutputStream() не понял.
...
Рейтинг: 0 / 0
скачать файл
    #38446860
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ping333, почему не анализируешь код возврата? Как ты узнаешь что scp (или любой другой процесс)
отработал на ОК ?
...
Рейтинг: 0 / 0
скачать файл
    #38446866
mesier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не мое, наверное, дело, но...
Хорошее оборудование однако - ОСь работает, файловая система есть.. А стало быть наверняка есть SNMP-агент, с помощью которого и конфигурячить можно (что является более правильной практикой, так как мы не завязываемся на аутентификацию в ОС).
Я просто баловался одно время управлялками "оборудованием", вот решил упомянуть и такой возможный путь.
...
Рейтинг: 0 / 0
скачать файл
    #38446877
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ping333как использовать getOutputStream() не понял.
p.getOutputStream().write(password);
...
Рейтинг: 0 / 0
скачать файл
    #38447338
Ping333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton, mesier,
Спасибо, эта часть кода заключена в try, исключения ловлю.
Про оборудование, SNMP есть, хорошая идея. Но мне нужно стянуть файл конфигурации, поправить в нем три строки, и залить обратно, с snmp думаю будет тяжелее..
...
Рейтинг: 0 / 0
скачать файл
    #38447349
mesier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ping333,
Почему тяжелее?
SNMP-агенты как правило для этого и предназначены.
Просто надо разобраться с OID-ами для данного девайса, с каким мы что берём, а с каким чего устанавливаем..
...
Рейтинг: 0 / 0
скачать файл
    #38447357
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ping333mayton, mesier,
Спасибо, эта часть кода заключена в try, исключения ловлю.
Про оборудование, SNMP есть, хорошая идея. Но мне нужно стянуть файл конфигурации, поправить в нем три строки, и залить обратно, с snmp думаю будет тяжелее..
try-catch здесь непричём. Он не ловит return codes. Правильнее сказать он не знает смысл этих
кодов т.к. они варьируются для каждой утилиты. Есть такая старая добрая unix-традиция. Все (почти)
экзешники (процессы) - это функции которые возвращают коды ошибок. Это целове число.
Ты после завершения процесса считываешь это целое число
и принимаешь решение о том как прошла работа. Через .waitFor() или еще как-нибудь.

В bash для этого используется $ echo $?

Пример таблицы кодов для SCP здесь

http://support.attachmate.com/techdocs/2116.html

Например 0 - означает Operation was successful.

В качестве эсперимента - укажи несуществующий хост admin@xxx.xxx.xxx.xxx и посмотри какой код будет возвращён.

STDERR - это конечно тоже круто но его парсить труднее да и вообще не факт что он обязательно
будет содержать какой-то полезный выхлоп.
...
Рейтинг: 0 / 0
скачать файл
    #38461379
Ping333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо! разобрался, работает. добавил также return codes.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / скачать файл
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]