2013-09-13 5 views
0

В настоящее время я меняю нашу систему на использование другого сервера для получения файла (файлы, созданные для отслеживания чего-то, а не важного). Эта система основана на java, и код для получения этих файлов использует коммандос Linux. Код для получения этих файлов являются:Команда Linux не работает при смене серверов

session = connection.openSession(); 
session.execCommand("ls -B -A " + filelocation); 
output = new BufferedReader(new InputStreamReader(new StreamGobbler(session.getStdout()), "UTF-8")); 

Это тем не менее работать на нашем исходном сервере (x86_64 GNU/Linux), но не работает на «новый» сервер (SunOS 5,10 Generic января). При выполнении этой команды на сервере SunOS я получаю:

ls: illegal option -- B 
usage: ls [email protected] [files] 

Я далек от хорошо знаком с с командной строкой, и я не написал исходный код. Но вот что я понял

-A, --almost-all   Do not list implied . and .. 
-B, --ignore-backups  Do not list implied entries ending with ~ 

Есть ли дополнительный способ заставить это работать на сервере SunOS?

EDIT

Проверка каждой строки читать, если line.endsWith ("~");

while ((outputString = output.readLine()) != null) { 
    if(!outputString.endsWith("~")){ 
     fileList.add(outputString);      
    } 
} 

ответ

0

Либо вы можете написать скрипт new_ls вызова Ls и удаление линий, которые заканчиваются «~»

Или при обработке результатов в Java вы можете также игнорировать строки считываются из BufferedReader путем проверки каждая строка читается, если line.endsWith ("~");

+0

Я думаю, им удастся избежать написания сценариев оболочки. Но при проверке каждой строки, если строка заканчивается на ~, означает ли это, что я должен удалить -B в команде: session.execCommand ("ls -A" + filelocation); ? Ive также отредактировал сообщение для дополнительной информации о кодах, является ли это использование целей с вами? – Jinxen