SlideShare a Scribd company logo
Лекция 10 - Expect4java
Васил Йорданов
Expect
Написан 1990 година за Unix от Don Libes
Скриптов език използван за автоматизиране на взаимодействието с
програма, която предоставя текстови терминален интерфейс.
Много Unix и Linix команди предоставят такъв интерфейс, като:
telnet
ftp
ssh
И много други
Примерна програма на Expect
spawn telnet $remote_server
expect "username:"
send "$my_user_idr"
expect "password:"
send "$my_passwordr"
expect "%"
send "$my_commandr"
expect "%"
set results $expect_out(buffer)
send "exitr"
expect eof
expect4java
Билиотека на Java създаваща DSL (Domain Specific Language) за писане
на Expect програми използващи езика Java
Написана от Васил Йорданов и Николай Милованов през 2013 г, като
част от проекта netTransformers на iTransformers Labs
Използва се в проекта netTransformer за автоматизиране на
конфигурирането на устройства разкрити от програмта netTransformer
– https://github.com/iTransformers/netTransformer
expect4groovy е тънъка Groovy обвивка на библотеката expect4java,
предоставяща възможност да се пишат Expect подобни изрази на
езика Groovy
expect4java - https://github.com/iTransformers/expect4java
expect4groovy - https://github.com/iTransformers/expect4groovy
HelloWorld на expect4java
import net.itransformers.expect4java.cliconnection.CLIConnection;
import net.itransformers.expect4java.cliconnection.impl.*;
import net.itransformers.expect4java.impl.Expect4jImpl;
import net.itransformers.expect4java.matches.GlobMatch;
public class HelloWorldExpect4Java {
public static void main(String[] args) throws Exception {
CLIConnection cliConnection = new LoggableCLIConnection(
new EchoCLIConnection(),
message -> System.out.println("> " + message),
message -> System.out.println("< " + message)
);
cliConnection.connect(new java.util.HashMap<>());
Expect4jImpl e4j = new Expect4jImpl(cliConnection);
e4j.send("Hello Worldn");
e4j.expect(new GlobMatch("Hello World"));
}
}
Стартиране на HelloWorld на expect4java
Изисквания:
JDK 1.8
maven 3.3
git client
Изтегляне на проекта:
git clone https://github.com/iTransformers/expect4java-samples.git
Build на проекта
mvn clean package
Стартиране на проекта
cd hello-worldtarget
java -jar hello-world-1.0-SNAPSHOT-jar-with-dependencies.jar
expect4java - SSH пример
CLIConnection sshConn = new LoggableCLIConnection(
new SshCLIConnection(),
msg -> System.out.println(">>> "+msg),
msg -> System.out.println("<<< "+msg)
);
Map<String, Object> connParams = new HashMap<>();
Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
config.put("PreferredAuthentications", "keyboard-interactive,password");
connParams.put("username", "guest");
connParams.put("password", "xxx");
connParams.put("address", "vyordanov.tk");
connParams.put("port", 22);
connParams.put("timeout", 1000);
connParams.put("config", config);
expect4java - SSH пример (продължение)
sshConn.connect(connParams);
Expect4j e4j = new Expect4jImpl(sshConn);
e4j.send("uname -an");
e4j.expect( new RegExpMatch("Linux ([^ ]*) .*",
(ExpectContext context) -> System.out.println("### Found: "+context.getMatch(1)))
);
e4j.send("exitn");
e4j.expect(new EofMatch());
e4j.close();
sshConn.disconnect();
Стартиране на HelloWorld на expect4java
Изисквания:
JDK 1.8
maven 3.3
git client
Изтегляне на проекта:
git clone https://github.com/iTransformers/expect4java-samples.git
Build на проекта
mvn clean package
Стартиране на проекта
cd ssh-exampletarget
java -jar simple-ssh-example-1.0-SNAPSHOT-jar-with-dependencies.jar

More Related Content

PDF
Linux обновления с RAUC и Docker
PDF
Why do we need a language like go?
PPT
Svetlin Nakov - .NET Framework Overview
PPTX
Демо урок по програмиране със Светлин Наков
PPT
Nakov - .NET Framework Overview + Security
ODP
Mozllla Labs presentation
PDF
HTML5 приложения за Android, урок 1
PPT
B1 t1 php_basics
Linux обновления с RAUC и Docker
Why do we need a language like go?
Svetlin Nakov - .NET Framework Overview
Демо урок по програмиране със Светлин Наков
Nakov - .NET Framework Overview + Security
Mozllla Labs presentation
HTML5 приложения за Android, урок 1
B1 t1 php_basics

Similar to Expect4java (10)

PPT
B1 t1 php_basics
DOCX
Veneta_Aleksieva_TechSys-last
PPTX
JavaScript навсякъде
ODP
Lotus Domino Admin Blast: LCTY 2011
PPT
B4 t4 include_files
PPT
B4 t4 include_files
PPT
B4 t4 include_files
PPTX
Huseyin Ozbilen 41б_ 356291
PDF
Защита при създаване на PHP-приложения в Интернет
PDF
JavaScript - езикът с много приложения
B1 t1 php_basics
Veneta_Aleksieva_TechSys-last
JavaScript навсякъде
Lotus Domino Admin Blast: LCTY 2011
B4 t4 include_files
B4 t4 include_files
B4 t4 include_files
Huseyin Ozbilen 41б_ 356291
Защита при създаване на PHP-приложения в Интернет
JavaScript - езикът с много приложения
Ad

More from Nikolay Milovanov (11)

PDF
LoRa online training for utility guys
PDF
LoRa мрежи за ютилити компании
PPTX
Thingslog bg facilities
PPTX
PDF
ThingsLog - приказка за един теч
PDF
PPTX
From OpenStack to Docker swarm
PPTX
DevOps as an emerging university discipline
PPTX
IPv4 to IPv6 network transformation
PPT
Департаменти Информатика и Телекомуникации в Нов Български Университет
PPTX
networkEvolution
LoRa online training for utility guys
LoRa мрежи за ютилити компании
Thingslog bg facilities
ThingsLog - приказка за един теч
From OpenStack to Docker swarm
DevOps as an emerging university discipline
IPv4 to IPv6 network transformation
Департаменти Информатика и Телекомуникации в Нов Български Университет
networkEvolution
Ad

Expect4java

  • 1. Лекция 10 - Expect4java Васил Йорданов
  • 2. Expect Написан 1990 година за Unix от Don Libes Скриптов език използван за автоматизиране на взаимодействието с програма, която предоставя текстови терминален интерфейс. Много Unix и Linix команди предоставят такъв интерфейс, като: telnet ftp ssh И много други
  • 3. Примерна програма на Expect spawn telnet $remote_server expect "username:" send "$my_user_idr" expect "password:" send "$my_passwordr" expect "%" send "$my_commandr" expect "%" set results $expect_out(buffer) send "exitr" expect eof
  • 4. expect4java Билиотека на Java създаваща DSL (Domain Specific Language) за писане на Expect програми използващи езика Java Написана от Васил Йорданов и Николай Милованов през 2013 г, като част от проекта netTransformers на iTransformers Labs Използва се в проекта netTransformer за автоматизиране на конфигурирането на устройства разкрити от програмта netTransformer – https://github.com/iTransformers/netTransformer expect4groovy е тънъка Groovy обвивка на библотеката expect4java, предоставяща възможност да се пишат Expect подобни изрази на езика Groovy expect4java - https://github.com/iTransformers/expect4java expect4groovy - https://github.com/iTransformers/expect4groovy
  • 5. HelloWorld на expect4java import net.itransformers.expect4java.cliconnection.CLIConnection; import net.itransformers.expect4java.cliconnection.impl.*; import net.itransformers.expect4java.impl.Expect4jImpl; import net.itransformers.expect4java.matches.GlobMatch; public class HelloWorldExpect4Java { public static void main(String[] args) throws Exception { CLIConnection cliConnection = new LoggableCLIConnection( new EchoCLIConnection(), message -> System.out.println("> " + message), message -> System.out.println("< " + message) ); cliConnection.connect(new java.util.HashMap<>()); Expect4jImpl e4j = new Expect4jImpl(cliConnection); e4j.send("Hello Worldn"); e4j.expect(new GlobMatch("Hello World")); } }
  • 6. Стартиране на HelloWorld на expect4java Изисквания: JDK 1.8 maven 3.3 git client Изтегляне на проекта: git clone https://github.com/iTransformers/expect4java-samples.git Build на проекта mvn clean package Стартиране на проекта cd hello-worldtarget java -jar hello-world-1.0-SNAPSHOT-jar-with-dependencies.jar
  • 7. expect4java - SSH пример CLIConnection sshConn = new LoggableCLIConnection( new SshCLIConnection(), msg -> System.out.println(">>> "+msg), msg -> System.out.println("<<< "+msg) ); Map<String, Object> connParams = new HashMap<>(); Properties config = new Properties(); config.put("StrictHostKeyChecking", "no"); config.put("PreferredAuthentications", "keyboard-interactive,password"); connParams.put("username", "guest"); connParams.put("password", "xxx"); connParams.put("address", "vyordanov.tk"); connParams.put("port", 22); connParams.put("timeout", 1000); connParams.put("config", config);
  • 8. expect4java - SSH пример (продължение) sshConn.connect(connParams); Expect4j e4j = new Expect4jImpl(sshConn); e4j.send("uname -an"); e4j.expect( new RegExpMatch("Linux ([^ ]*) .*", (ExpectContext context) -> System.out.println("### Found: "+context.getMatch(1))) ); e4j.send("exitn"); e4j.expect(new EofMatch()); e4j.close(); sshConn.disconnect();
  • 9. Стартиране на HelloWorld на expect4java Изисквания: JDK 1.8 maven 3.3 git client Изтегляне на проекта: git clone https://github.com/iTransformers/expect4java-samples.git Build на проекта mvn clean package Стартиране на проекта cd ssh-exampletarget java -jar simple-ssh-example-1.0-SNAPSHOT-jar-with-dependencies.jar