Bashは他のCLIにコマンドを送信する必要があります。

Bashは他のCLIにコマンドを送信する必要があります。

サーバーにログインするいくつかのコマンドを自動化したいと思います。次のコマンドラインは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
") 

おすすめ記事