User Tools

Site Tools


программирование_диалогов_expect

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
программирование_диалогов_expect [2019/08/15 09:27]
val [Вариант использования с элементами конфигурации в файле на tftp сервере]
программирование_диалогов_expect [2022/03/09 12:49]
val [Вариант использования с элементами конфигурации в коде скрипта]
Line 6: Line 6:
 </​code>​ </​code>​
  
-===== Вариант использования с элементами конфигурации в коде скрипта =====+===== Cisco CLI ===== 
 + 
 +==== Вариант использования с элементами конфигурации в коде скрипта ==== 
 + 
 +!!! Не обрабатывается ситуация первого подключения (подтверждения ключа) 
 <​code>​ <​code>​
 +server# ssh switchN
 +
 server# cat cisco_change_conf.exp server# cat cisco_change_conf.exp
 </​code><​code>​ </​code><​code>​
Line 17: Line 24:
 send "​\n"​ send "​\n"​
 expect "​sword:"​ { send "​cisco\n"​ } expect "​sword:"​ { send "​cisco\n"​ }
-expect "#"​ { send "conf t\n" } 
  
 +expect "#"​ { send "conf t\n" }
 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"​ }
 +e#xpect "#"​ { send "​exit\n"​ }
  
 expect "#"​ { send "​write\n"​ } expect "#"​ { send "​write\n"​ }
Line 32: Line 44:
 </​code>​ </​code>​
  
-===== Вариант использования с элементами конфигурации в файле на tftp сервере ​=====+==== Вариант использования с элементами конфигурации в файле на tftp сервере ====
 <​code>​ <​code>​
 +server# cat /​srv/​tftp/​cisco_change_conf.txt 
 +</​code><​code>​ 
 +ip scp server enable 
 +end 
 +</​code><​code>​ 
 +server# cat cisco_change_conf.exp 
 +</​code><​code>​
 ... ...
 expect "#"​ { send "copy tftp://​server/​cisco_change_conf.txt runn\n"​ } expect "#"​ { send "copy tftp://​server/​cisco_change_conf.txt runn\n"​ }
Line 40: 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>​
 +
 +===== 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>​
 +# cat /​usr/​share/​originate_ami.exp
 +</​code><​code>​
 +#​!/​usr/​bin/​expect
 +
 +set username "​admin"​
 +set secret "​admin"​
 +set host "​127.0.0.1"​
 +set port "​5038"​
 +
 +set channel [lindex $argv 0];
 +set num [lindex $argv 1];
 +set name [lindex $argv 2];
 +
 +send_user "Args: $channel $num $name\n"​
 +
 +spawn telnet $host $port
 +
 +expect "​Manager"​ {
 +        send "​Action:​ Login\n"​
 +        send "​Username:​ $username\n"​
 +        send "​Secret:​ $secret\n\n"​
 +}
 +
 +expect "​Response:​ Success"​ {
 +        send "​Action:​ Originate\n"​
 +        send "​Channel:​ SIP/​$channel\n"​
 +        send "​Context:​ default\n"​
 +        send "​Exten:​ $num\n"​
 +        send "​Callerid:​ $name<​$num>​\n"​
 +        send "​Priority:​ 1\n\n"
 +}
 +
 +sleep 1
 +
 +send "​Action:​ Logoff\n\n"​
 +
 +exit 0
 +</​code><​code>​
 +# /​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>​
программирование_диалогов_expect.txt · Last modified: 2022/03/09 12:49 by val