2016-12-08 9 views
0

私はいくつかのtelnetコマンドを自動化する非常にシンプルなshスクリプトを実行していますが、問題が発生しました。shスクリプトからtelnetでSOH文字を送信するにはどうすればよいですか?

つのコマンドは、入力したコマンド名に続いて、(CTRL +を使用して正常に送信された)SOHの文字が必要です。これはそのスニペットですが、動作しません:

#!/bin/sh 
(
echo open 12.34.56.78 
sleep 2 
echo -e "\u001""commandname" 
echo -e "\n" 
sleep 3 
echo "quit" 
) | telnet 

私は間違っていますか?スクリプトを介してそのSOH文字を送信するにはどうすればよいですか?

+0

'echo -e'はPOSIXシェルではサポートされていません。あなたのシバンを '#!/ bin/bash'に変更するか、' printf'を使用してください。 – chepner

答えて

1

printfを使用してください。

{ 
    printf "open 12.34.56.78\n" 
    sleep 2 
    printf '\001commandname\n\n' 
    sleep 3 
    printf 'quit\n' 
} | telnet 
+0

スクリプト内のコマンド名は数字(300)で、入力は[SOH] 300となっています。それで、あなたの例では、その行で正しい構文ですか? 'printf '\ 1300 \ n \ n'? – Moses

+0

ああ、心配しないで。私は '%b'をバックスラッシュから逃れることを忘れていました。したがって、私の場合の正しい構文は '\ 1%b300 \ n \ n'です。 – Moses

+0

私はそれを単純化してはいけません。 8進数は1〜3桁にすることができますので、あいまいさを避けるためにゼロ詰めすることはどのような場合でも良い考えですが、ここでは必須です。 – chepner

関連する問題