автоматизация telnet с помощью Groovy - PullRequest
0 голосов
/ 14 августа 2010

Я делаю сборку / OSGi.

У меня хорошо строится комплект OSGi, но я хочу автоматизировать развертывание комплекта.Я не думаю, что для этого есть сложная задача, так что это становится интересным вопросом.Чтобы выполнить развертывание в контейнере osgi, выполните следующие действия:

  1. telnet к порту контейнера OSGi
  2. отправьте команду ss для вывода списка пакетов
  3. для анализа пакета ввопрос
  4. удалить пакет с помощью команды "uninstall [ID]"
  5. установить пакет с помощью "install file: /// path to bundle" url
  6. разобратьрезультаты
  7. выход из сеанса telnet.

Есть ли способ подключиться к порту telnet с помощью Groovy, отправить команды и прочитать вывод?

Спасибо за любую помощь,фил

Ответы [ 2 ]

1 голос
/ 14 августа 2010

Я не знаю о telnet, но я работал с Groovy и SSH, используя AntBuilder и задачу sshexec, например:

class SshClient {

    def host
    def username
    def password


    def execute (def command) {
        def ant = new AntBuilder()
        ant.sshexec(host : host,
                    username : username,
                    password : password,
                    command : command,
                    trust : "true",
                    outputproperty : "result")

        return ant.project.properties."result"
    }
}

def ssh = new SshClient ( host: "myhost",
                          username : "myuser",
                          password : "secret")

println ssh.execute("ls")

Вам понадобятся ant-jsch.jar и jsch-0.1.33.jar или выше в вашем classpath.

0 голосов
/ 16 августа 2010

Это должно быть просто выполнимо с обычным сокетом и Stream Readers / Writer.Telnet - это просто интерфейс для простого сокетного ввода-вывода, основанного на текстовых протоколах.

Итак, чтобы выполнить ваши шаги:

  • Создайте нормальный сокет для хоста / порта назначения
  • Напишите "ss"
  • Создайтеinputtreamreader
  • Использовать все доступное
  • Разобрать, чтобы найти ваш идентификатор пакета
  • Отправить "uninstall" + bundleId
  • Использовать поток до тех пор, пока не прибудет командная строка / не завершится удаление
  • Отправить "установочный файл: // путь /"
  • Использовать поток до тех пор, пока не прибудет командная строка / установка не завершена
  • socket.close ()

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

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