Команда SSH из программы Scala с чистым API Scala или API Ammonite

Я хотел бы выполнить команду SSH, а затем выполнить какую-то команду на удаленной машине из scala. Как scala API, так и Scala Ammonite позволяют выполнять системные команды. Однако у меня проблема с ssh. Как мне запустить команду ssh, а затем запустить команду и получить результат обратно из моей программы scala?

РЕДАКТИРОВАТЬ1

нашел в этом сообщении следующее: Проблемы с использованием scala для удаленного выполнения команд через ssh

"ssh [email protected] 'mkdir Desktop/test'".!

Интересно, как это можно сделать с помощью scala Amonite API. Я не смог найти путь.


person MaatDeamon    schedule 03.09.2017    source источник
comment
не зная, что вы пытаетесь сделать, трудно ответить, но, может быть, вы можете запустить скрипт bash перед scala jar/script, который будет запускать команды ssh для вас и сохранять результат где-нибудь, где код scala может получить к нему доступ?   -  person Tal Joffe    schedule 03.09.2017
comment
Нет, нет, я хочу сделать все это в Scala. До сих пор, используя второй подход, я получаю результат в виде строки. Вместо этого я хотел бы иметь выходной поток. STD вне. Сделать это просто, я пытаюсь запустить ls. Это работает: ssh ... ls!! Но возврат в строке. я хочу пар   -  person MaatDeamon    schedule 03.09.2017


Ответы (2)


На данный момент нашел то, что хотел, с помощью Scala API: http://www.scala-lang.org/api/2.12.1/scala/sys/process/ProcessBuilder.html например.

 import scala.sys.process.ProcessBuilder  
 import scala.sys.process._ 
 import scala.sys.process

 "ssh 192.168.0.103  ls IdeaProjects" lineStream 

Это работает как шарм. Выполненный с одной моей машины на другую, он работал безупречно. Для этого необходимо заранее настроить ssh без фраз. Я использую то же самое на обеих машинах, на других мне также пришлось бы указать пользователя.

Если кто-то может дополнить ответ и объяснить, как это сделать с помощью Ammonite API, было бы здорово.

person MaatDeamon    schedule 03.09.2017

Вы можете использовать Cable для выполнения задач SSH. Cable поддерживает конфигурацию ~/.ssh, а также глобальный ssh. конфиг клиента. Кабель также поддерживает переходы через сети, переходы через узлы-бастионы. Кабель позволяет создавать задачи внутри хоста и на множестве разных хостов.

person Michaelzh    schedule 09.04.2021
comment
О, спасибо ???????? - person MaatDeamon; 09.04.2021