Выполнить системную команду с groovy - PullRequest
0 голосов
/ 18 июня 2020

У меня есть образец js скрипта, который позволяет мне видеть файлы, расположенные на сервере myHost, поэтому он отлично работает:

var exec = require('ssh-exec')
var v_host = 'myHost'
exec('ls -lh', {
    user: 'username',
    host: v_host,
    password: 'password'
}).pipe(process.stdout , function (err, data) {
    if ( err ) { console.log(v_host); console.log(err); }
    console.log(data)
})

Теперь я хочу установить host, когда я Пытаюсь выполнить system commands из groovy. Вот мой пример сценария groovy, но он работает в локальной системе, на самом деле я вижу файлы, расположенные на моем локальном сервере:

Process p = Runtime.getRuntime().exec("ls -l")
p.waitFor();
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));

StringBuilder execSb = new StringBuilder();
String line = "";           
while ((line = reader.readLine())!= null) {
    execSb.append(line + "\n");
}

Могу ли я дать host методу exec лайки js script?

1 Ответ

1 голос
/ 18 июня 2020

s sh -exe c выполняет команду удаленной системы

один из вариантов: загрузите библиотеку jschXX.jar и поместите ее в каталог groovy / lib

тогда вы должны быть возможность использовать следующий код groovy:

def ant = new AntBuilder()
ant.sshexec{
    host:           "somehost", 
    username:       "dude",
    password:       "yo",
    command:        "touch somefile",
    outputproperty: "ssh_stdout"
}
println ant.ssh_stdout

не могу попробовать код прямо сейчас.

параметры для команды ant.sshexec: https://ant.apache.org/manual/Tasks/sshexec.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...