6774


spawn した telnet プロセスに対して、文字以外のキーを送る場合、どうすればいいでしょうか。

例えば、文字"START"を送る場合、下記コードのように記述しました。  
同様に、"hoge"の部分で 「ctrl と ] と retern」 など、英数字以外のキーを含ませたい場合は、どう記述するものなのでしょうか。

[code]

    #!/usr/bin/expect -f
    spawn telnet 10.0.0.1 50001
    expect "SCPI" { sleep 1; send "START"; }
    expect "SCPI" { sleep 1; send "hoge"; }
    expect eof
    
[/code]


CC BY-SA 3.0
2015-02-19T09:46:59.663
6769
2015-02-19T13:41:52.617
2015-02-19T13:41:52.617
7590
7590
question
bash expect
spawnしたtelnet プロセスに対して英数字以外のキー（Controlキー + ]など）を送るには


spawn した telnet プロセスに対して ^] を送信したいのであれば、以下のようにエスケープすれば制御コードを送信できます。

[code]

    #!/usr/bin/expect -f
    spawn telnet localhost 50001
    expect "SCPI" {
        sleep 1
        send "START"
    }
    expect "SCPI" {
        sleep 1
        send "\035"
    }
    expect "telnet>" {
        send "quit\r"
    }
    expect eof
    
[/code]

エスケープの方法は以下に記載されています。

<http://expect.sourceforge.net/FAQ.html#q54>


CC BY-SA 3.0
2015-02-19T10:44:02.220
6772
2015-02-19T10:44:02.220
1024
6769
answer


例えばC-cを送信したい場合

[code]

    send "\003";
    
[/code]

でできます。  
その他のエスケープシーケンスについては[ASCII character
table](http://foldoc.org/ASCII+character+table)を参照いただけるとわかるかと思います。

あるいは

[code]

    send "^[";
    
[/code]

と書くのですが、 `^[` この文字を普通の打つのではなく、vimであればinsert modeで`C-v
C-[`とすることで制御文字を入力しても可能だと思います。Emacsでは`C-q C-[`です


CC BY-SA 3.0
2015-02-19T10:52:58.663
6774
2015-02-19T10:52:58.663
4508
6769
answer