サーバーにログインするいくつかのコマンドを自動化したいと思います。次のコマンドラインはLinuxコマンドラインではなく、アプリケーション自体のコマンドラインです。現在の解決の試みは次のとおりです。
#!/bin/bash
# smsme.sh
i=0
i=$((i+1))
rancli
sleep 3
echo `add saf dest=4949 orig=Wim text=$i`
sleep 120;
# ---
クイックヒントは追加中に壊れます。私もコマンドをパイプしようとしましたが、rancliを押さずにLinux enverimontでエコーされました。
更新後のスクリプトの更新
#!/bin/bash
# smsme.sh
i=0
i=$((i+1))
rancli
read $reply
応答スクリプト
#!/usr/bin/env expect
set timeout -1
spawn ./smsme.sh
expect {
"Quortus Core CLI (c) 2019
No entry for terminal type "xterm-256color";
using dumb terminal settings.
Connecting to RAN at 127.0.0.1:3012QCore>
LTE64b>"
}
eof
}
send -- add saf dest=4949 orig=Wim text=wim
expect "Submitted, message number $1"
expect eof
答え1
上記のように、Expectはあなたが試しているこの呼び出しを行うことができます。この他のアプリケーションの CLI インターフェイス応答に基づいて対話できます。
VAR=$(expect -c "
spawn rancli add saf dest=4949 org=Wim text=$i
expect \"place_what_expect_to_receive_from_that_appcli\"
send \"whatever_you_want_to_send_initially\r\"
expect \"\\\\example_system_cursor \"
#you can sleep if needed
sleep 2
")
答え2
だから、ここで提供された答えは問題を予想して問題を解決しました。私はbashが知らない奇妙な小さなことを経験しました。これはこの回答でも扱われました。 Bash以外の環境で変数を増やすことができないという別の問題があります。しかし、今はcronjobとして実行することができます。
#!/usr/bin/env expect
set timeout 20
set cmd "rancli"
eval spawn $cmd
expect "Connecting to RAN at 127.0.0.1:3012QCore>"
sleep 2
send "add saf dest=8345 orig=politie text=panda\r"
expect "Submitted,"
send "exit\r"
panda\r" を (+1) 増加する変数に変更する方法について提案がある人がいるとよいでしょう。