powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Очень нужна помощь
25 сообщений из 31, страница 1 из 2
Очень нужна помощь
    #33293690
Фотография peter6636
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Короче задали такую задачу:
Нужно написать программу,которая будет запускать линуксовую команду(не помню какую, но суть пока не в этом) на сервере (эта команда показывает какие айпи адреса есть,в какие vlan-ы они входят, дату последнего сеанса связи и т.д). Вообщем результатом выполнения команды есть текстовый файл с вышеперечисленными данными, моя прога должна будет выкачать этот файл и красиво выдать его в JTable.
Спасибо всем,кто откликнется.
...
Рейтинг: 0 / 0
Очень нужна помощь
    #33293717
ТимоН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А можно на файл глянуть? На вскидку StringTokenzier должен вам помочь.
...
Рейтинг: 0 / 0
Очень нужна помощь
    #33293739
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так в чем, собственно, проблема? В том, как команду запустить, как файл найти/считать или как его в табличку по ячейкам распихать?
...
Рейтинг: 0 / 0
Очень нужна помощь
    #33293777
Фотография peter6636
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗашедшийТак в чем, собственно, проблема? В том, как команду запустить, как файл найти/считать или как его в табличку по ячейкам распихать?
как запустить удаленно команду, как обработать файл(файл выглядит как обычная таблица, название колонок,а под ними содержаниями,) и разпихать потом по ячейкам
...
Рейтинг: 0 / 0
Очень нужна помощь
    #33293819
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторкак запустить удаленно команду
вот это основная проблема, как мне кажется, все остальное детский сад.
- можно создать сервер(будет крутится на линухе) и клиент
- если без сервера, то можно попробавать локально запускать телнет, и передавать ему команды, затем читать телнетовский выходной поток, думаю это реально.
- поставить на серваке Tomcat и сделать веб-приложение, это думаю саммый оптимальный вариант.
...
Рейтинг: 0 / 0
Очень нужна помощь
    #33293833
ТимоН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для чтения построчно используй класс FileReader метод readLine. Получишь строку, разпарсь её StringTokenzier'ом на токены заполняя массив стрингов(String[][]). Моделью таблици отображай полученый массив (String[][]) и все. Я б так сделал.
...
Рейтинг: 0 / 0
Очень нужна помощь
    #33293868
ТимоН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если локальный файл...
...
Рейтинг: 0 / 0
Очень нужна помощь
    #33293894
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
peter6636 ЗашедшийТак в чем, собственно, проблема? В том, как команду запустить, как файл найти/считать или как его в табличку по ячейкам распихать?
как запустить удаленно команду, как обработать файл(файл выглядит как обычная таблица, название колонок,а под ними содержаниями,) и разпихать потом по ячейкам
Как запустить команду удаленно - сейчас сказать не могу, а искать некогда, а вот с обработкой файла все довольно просто. У тебя, видимо, всегда во всех колонках присутствуют значения, так что разбирать можно с помощью стандартного StringTokenizer. Он по умолчанию как раз разбирает строки значений, разделенных пробелами.
...
Рейтинг: 0 / 0
Очень нужна помощь
    #33293908
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТимоНДля чтения построчно используй класс FileReader метод readLine. Получишь строку, разпарсь её StringTokenzier'ом на токены заполняя массив стрингов(String[][]). Моделью таблици отображай полученый массив (String[][]) и все. Я б так сделал.
Вот как раз насчет двуразмерного массива не факт, может, лучше бы сделать лист из одномерных массивов (записей, разбитых на колонки), потому что исходно длина файла и количество строк в нем неизвестно.
...
Рейтинг: 0 / 0
Очень нужна помощь
    #33293947
ТимоН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну тогда вектором можно хранить.
...
Рейтинг: 0 / 0
Очень нужна помощь
    #33293950
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как-то так файло разбираться должно:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
List lines =  new  ArrayList();
...

function  void  parseLine(String line) {
    StringTokenizer st =  new  StringTokenizer(line);
    String[] record =  new  Strring[st.countTokens];
     int  i =  0 ;
     while  (st.hasMoreTokens()) {
        record[i++] = st.nextToken();
    }
    lines.add(record);
}

function  void  parseFile(String fileName)  throws  IOException {
    BufferedReader reader =  new  BufferedReader( new  FileReader(fileName));
    String line = reader.readLine();
     while  (line !=  null ) {
        parseLine(line);
        line = reader.readLine();
    }
    reader.close();
}
...
Рейтинг: 0 / 0
Очень нужна помощь
    #33293954
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТимоННу тогда вектором можно хранить.Можно, но лучше листом. Как Сан рекомендует. Слово "вектор" в Яве вообще лучше забыть :)
...
Рейтинг: 0 / 0
Очень нужна помощь
    #33294146
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зашедший ТимоННу тогда вектором можно хранить.Можно, но лучше листом. Как Сан рекомендует. Слово "вектор" в Яве вообще лучше забыть :)
сцылку можно?
...
Рейтинг: 0 / 0
Очень нужна помощь
    #33294208
Фотография peter6636
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wessen
- если без сервера, то можно попробавать локально запускать телнет, и передавать ему команды, затем читать телнетовский выходной поток, думаю это реально.

вот это мне больше всего приглянулось,как мне с телнетом работать.
Какими методами пердавать в него команды, какими читать выходной поток?
...
Рейтинг: 0 / 0
Очень нужна помощь
    #33294289
botpride
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Timm Зашедший ТимоННу тогда вектором можно хранить.Можно, но лучше листом. Как Сан рекомендует. Слово "вектор" в Яве вообще лучше забыть :)
сцылку можно?

По-моему, эту утку про "обсолетность" вектора придумали обкурившиеся ребята из JetBrains. У них даже в code inspection оно радостно ругается на вектора (рекомендуя, естественно, заменять их на ArrayList).
Но: ArrayList отнюдь не быстрее - это раз. Задать инкремент в конструкторе нельзя - это два. И, наконец, нету банального урезания - разве что циклическим remove.
Я как-то просто ради интереса сбекапил код готового проекта, а потом тупо поменял Vector на ArrayList. После небольшой правки напильником все ожило, а вот работало несколько медленней оригинала - видимо, именно за счет невозможности ручками инкременты прописать.
...
Рейтинг: 0 / 0
Очень нужна помощь
    #33294356
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Timm Зашедший ТимоННу тогда вектором можно хранить.Можно, но лучше листом. Как Сан рекомендует. Слово "вектор" в Яве вообще лучше забыть :)
сцылку можно?
Во второй книге сановской серии "Core Java" в разделе Collections описано, почему. Дело в том, что Vector имеет синхронизированные методы, а в большинстве случаев используется в одном потоке. Поэтому сильно тормозит общее быстродействие циклов. Для унификации рекомендуется использовать List во всех случаях, для многопоточных юзать что-то вроде Collections.synchronizedList(new ArrayList()).
...
Рейтинг: 0 / 0
Очень нужна помощь
    #33294377
Фотография peter6636
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посоветуйте бесплатный джава вреймворк для работы с тэлнэт
...
Рейтинг: 0 / 0
Очень нужна помощь
    #33294385
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зашедший Timm Зашедший ТимоННу тогда вектором можно хранить.Можно, но лучше листом. Как Сан рекомендует. Слово "вектор" в Яве вообще лучше забыть :)
сцылку можно?
Во второй книге сановской серии "Core Java" в разделе Collections описано, почему. Дело в том, что Vector имеет синхронизированные методы, а в большинстве случаев используется в одном потоке. Поэтому сильно тормозит общее быстродействие циклов. Для унификации рекомендуется использовать List во всех случаях, для многопоточных юзать что-то вроде Collections.synchronizedList(new ArrayList()).
кхм...
это не объяснение.
в идее всю лабуду по code inspection можно настроить как твоей душе угодно, за что можно сказать спасибо JetBrains;
то что у Vector'а синхронизированы методы - об этом написано везде, начиная с API, и если кто то не знает - его проблемы.

меня интересует фраза "Как Сан рекомендует".
?
...
Рейтинг: 0 / 0
Очень нужна помощь
    #33294393
botprideПо-моему, эту утку про "обсолетность" вектора придумали обкурившиеся ребята из JetBrains.

Сходи на Java.Sun.Com, почитай откуда ноги растут.

Методы Vector синхронизированы и поэтому, в теории, он менее продуктивен.
...
Рейтинг: 0 / 0
Очень нужна помощь
    #33294405
Фотография peter6636
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Начали за здравие, а закончили за упокой.Мужики, вопрос не про колекции был, а про using telnet
...
Рейтинг: 0 / 0
Очень нужна помощь
    #33294445
Фотография stdio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
peter6636Начали за здравие, а закончили за упокой.Мужики, вопрос не про колекции был, а про using telnetда чего ты пристал со своим мелочным телнетом. :-)
Тут такие вещи обсуждаются!!! ;-)
...
Рейтинг: 0 / 0
Очень нужна помощь
    #33294459
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот, например, с javaworld сцылка , по итогам JavaOne 98 года еще. Цитата: "Although they are not actually deprecated, the Enumeration interface, arrays, Vector class, and Dictionary class now are obsolete. (Deprecation would be impossible. There is too much code that uses them and too many changes would be required to that code to use the new APIs.)"
...
Рейтинг: 0 / 0
Очень нужна помощь
    #33294462
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот от самого сана рекомендация в девелоперз тренингах:
тынц , тоже цитата: "A Vector is an historical collection class that acts like a growable array, but can store heterogeneous data elements. With the Java 2 SDK, version 2, the Vector class has been retrofitted into the Collections Framework hierarchy to implement the List interface. However, if you are using the new framework, you should use ArrayList, instead."
...
Рейтинг: 0 / 0
Очень нужна помощь
    #33294651
Ekshibarov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А что если выполнить команду удаленно по SSH? Вот вырезки, когда то писал для работы по SSH:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
 public   class  mCashSSHSession {

	 private  SSHSessionWriter writer;
	 private  SshClient ssh;
	 private  SshSession session;

 public   boolean  startSession(String host, String user, String password)  throws  SshException, IOException, ChannelOpenException{
		
        SshConnector con = SshConnector.getInstance();

        // Verify server host keys using the users known_hosts file
        con.setKnownHosts( new  ConsoleKnownHostsKeyVerification());

        /**
         * Connect to the host
         */
         this .ssh = con.connect( new  SocketTransport(host,  22 ), user);
		
        com.maverick.ssh.PasswordAuthentication pwd =  new  com.maverick.ssh.PasswordAuthentication();
		
        pwd.setPassword(password);
        
         if (!( this .ssh.authenticate(pwd)==SshAuthentication.COMPLETE &&  this .ssh.isConnected())){
        	
        		System.out.println("Authentication Error");
        		 return  false;  
      }
        
         if (! this .ssh.isAuthenticated()){

        		System.out.println("Authentication Error");
        		 return  false;       	
      }
  
         this .session =  this .ssh.openSessionChannel();

        // Use the newly added PseudoTerminalModes class to
        // turn off echo on the remote shell
        PseudoTerminalModes pty =  new  PseudoTerminalModes( this .ssh);
        pty.setTerminalMode(PseudoTerminalModes.ECHO, false);
       
         this .session.requestPseudoTerminal("vt100",  80 ,  24 ,  0 ,  0 , pty);
         this .session.startShell();
  
         this .writer =  new  SSHSessionWriter( this .session);
         this .writer.start();
          return  true;
	}
	
	 public   void  closeSession(){
		
		 this .writer.interrupt();
		 this .session.close();
		 this .ssh.disconnect();
		
	}
	
	 public   void  executeCommand(String command){
		
		 try  {
			 this .session.getOutputStream().write((command+"\n").getBytes());
		}  catch  (SshIOException e) {
			System.out.println("SSH IO Error : "+e.getMessage());
		}  catch  (IOException e) {
			System.out.println("IO Error : "+e.getMessage());
		}		
	}

 class  SSHSessionWriter  extends  Thread{
	
	 private  SshSession session;
	
	 public  SSHSessionWriter(SshSession session){
		
		 this .session = session;
	}
	 public   void  run(){
		
		 byte [] readBytes =  new   byte [ 4096 ];
		 int  readed;	
		 try  {
			 while ((! this .isInterrupted())&&((readed = session.getInputStream().read(readBytes, 0 , 4096 )) > - 1 )){
				System.out.println( this .lastResponse); //Собственно вот здесь и возвращается результат команд
			}
			System.out.println("Exit");
		}  catch  (SshIOException e) {
			System.out.println("SSH Error : "+e.getMessage());
		}  catch  (IOException e) {
			System.out.println("IO Error : "+e.getMessage());
		}		
	}	
}


Для работы по SSH использовал библиотеку Maverick, скачать можно:
Вот здесь
...
Рейтинг: 0 / 0
Очень нужна помощь
    #33294844
am_sasa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Точно не помню,давно это было,вроде в *NIX есть сервис по удаленному запуску команд, который сидит не то на 512 или 511 порту. Делешь сокет на этот порт,посылаешь шеловскую команду и вычитываешь,что она выдает.
...
Рейтинг: 0 / 0
25 сообщений из 31, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Очень нужна помощь
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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