ネットワークゲートウェイが変更されたときに自動的に/etc/rsyslog.confに行を追加/置き換えるbashにスクリプトを書き込もうとしています。これにより、指定されたログファイルを使用するrsyslogサーバーの配布が可能になります。BashスクリプトからゲートウェイIPを取得すると失敗しますが、端末で動作します
私はこれがなぜ失敗するのかを判断することができず、より理解しやすい人が対応できることを期待していません。
以下はスクリプトです。
#!/bin/bash
GETGATEWAY="route -n | grep 'UG[ \t]' | awk '{print \$2}'"
echo "This is a test"
echo $GETGATEWAY
shopt -s extglob
$GETGATEWAY
結果は以下のとおりです。
これは、テストルート-n | grep 'UG [\ t]' | awk '{print $ 2}'使用法: route [-nNvee] [-FC] []カーネルルーティングテーブルを一覧表示する route [-v] [-FC] {add | del | flush} ... AFのルーティングテーブルを変更する。
route {-h|--help} [<AF>] Detailed usage syntax for specified AF. route {-V|--version} Display version/author and exit. -v, --verbose be verbose -n, --numeric don't resolve names -e, --extend display other/more information -F, --fib display Forwarding Information Base (default) -C, --cache display routing cache instead of FIB
= '-A'または ' - 'を使用します。デフォルト:inet可能な アドレスファミリのリスト(ルーティングをサポート): inet(DARPAインターネット)inet6(IPv6)ax25(AMPR AX.25) netrom(AMPR NET/ROM)ipx(Novell IPX)ddp(Appletalk DDP) X25(CCITT X.25)
あなたは期待どおりに動作しますが、「これはテストです」と実行するために、端末にペーストした後、エコーラインをコピーする場合。 route -n | grep 'UG [\ t]' | awck '{print $ 2}'
shopt -s extglobの有無にかかわらず、複数のシェルオプションを試しました。
言うまでもなく使用| awk '/ UG [\ t]/{print $ 2}' 'は' route -n | 'と同じ結果を出します。 grep 'UG [\ t]' | awk '{print $ 2}'はそうです! – user3439894