This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
программирование_диалогов_expect [2020/01/16 10:48] val [Asterisk AMI] |
программирование_диалогов_expect [2022/03/09 12:49] (current) val [Вариант использования с элементами конфигурации в коде скрипта] |
||
---|---|---|---|
Line 9: | Line 9: | ||
==== Вариант использования с элементами конфигурации в коде скрипта ==== | ==== Вариант использования с элементами конфигурации в коде скрипта ==== | ||
+ | |||
+ | !!! Не обрабатывается ситуация первого подключения (подтверждения ключа) | ||
+ | |||
<code> | <code> | ||
+ | server# ssh switchN | ||
+ | |||
server# cat cisco_change_conf.exp | server# cat cisco_change_conf.exp | ||
</code><code> | </code><code> | ||
Line 23: | Line 28: | ||
expect "#" { send "ip scp server enable\n" } | expect "#" { send "ip scp server enable\n" } | ||
expect "#" { send "end\n" } | expect "#" { send "end\n" } | ||
+ | |||
+ | #expect "#" { send "vlan database\n" } | ||
+ | #expect "#" { send "vtp transparent\n" } | ||
+ | #expect "#" { send "vlan 2 name LAN2\n" } | ||
+ | #expect "#" { send "exit\n" } | ||
expect "#" { send "write\n" } | expect "#" { send "write\n" } | ||
Line 48: | Line 58: | ||
send "\n" | send "\n" | ||
... | ... | ||
+ | </code> | ||
+ | |||
+ | ===== Communigate CLI ===== | ||
+ | |||
+ | <code> | ||
+ | mail# cat cgp_cli.exp | ||
+ | </code><code> | ||
+ | #!/usr/bin/expect | ||
+ | |||
+ | set cmd [lindex $argv 0]; | ||
+ | |||
+ | spawn telnet localhost 106 | ||
+ | |||
+ | expect "200" { | ||
+ | send "USER postmaster\n" | ||
+ | } | ||
+ | |||
+ | expect "300" { | ||
+ | send "PASS Pa\$\$w0rd\n" | ||
+ | } | ||
+ | |||
+ | expect "200" { | ||
+ | send "$cmd\n\n" | ||
+ | } | ||
+ | |||
+ | expect "200" {} | ||
+ | |||
+ | sleep 1 | ||
+ | send "QUIT\n" | ||
+ | send_user "\n" | ||
+ | exit 0 | ||
+ | </code><code> | ||
+ | mail# chmod +x cgp_cli.exp | ||
+ | |||
+ | mail# ./cgp_cli.exp 'CREATEACCOUNT user2 {Password = "password2";RealName = "Петр Петрович Петров";}' | ||
+ | |||
+ | mail# ./cgp_cli.exp 'GETACCOUNTSETTINGS user2' | ||
</code> | </code> | ||
===== Asterisk AMI ===== | ===== Asterisk AMI ===== | ||
+ | |||
+ | * [[http://the-asterisk-book.com/1.6/asterisk-manager-api.html#manager-interface-beispiel-expect|Example: Getting the number of voicemail messages with expect]] | ||
<code> | <code> | ||
# cat /usr/share/originate_ami.exp | # cat /usr/share/originate_ami.exp | ||
Line 91: | Line 140: | ||
</code><code> | </code><code> | ||
# /usr/share/originate_ami.exp 403 301 "Hello World" | # /usr/share/originate_ami.exp 403 301 "Hello World" | ||
+ | </code> | ||
+ | |||
+ | ===== Docker ====== | ||
+ | <code> | ||
+ | webinar BBB# cat /root/scripts/ch_web_pass.exp | ||
+ | </code><code> | ||
+ | #!/usr/bin/expect | ||
+ | |||
+ | set email [lindex $argv 0]; | ||
+ | set password [lindex $argv 1]; | ||
+ | |||
+ | spawn docker exec -it greenlight-v2 bash | ||
+ | send "\n" | ||
+ | expect "bash*#" {send "bundle exec rails c\n"} | ||
+ | expect "irb*>" { send "User.find_by(email: \"$email\").update_attribute(:password,\"$password\")\n" } | ||
+ | expect "irb*>" { send "exit\n" } | ||
+ | expect "bash*#" { send "exit\n" } | ||
+ | send_user "\n" | ||
+ | exit 0 | ||
</code> | </code> |