it-swarm-ja.com

ホストIPアドレスに基づくif / elseロジックを使用したTCL / Expectスクリプト

そのため、ユーザーIDとパスワードがオートコンプリートされるため、サーバーにすばやくログインできるため、スクリプトに/ usr/bin/expectを使用して楽しんでいます。ざっと読んでみると、基本的にはTCLのスーパーセットであり、何も知らないことを認めています。

MacBook Proを使用して常にサーバーにSSH接続しています。ログインスクリプトをさらに一歩進めて、内部ネットワークのNASにログインしている場合は、一方通行でログインさせたいと考えています。私のホームネットワーク(RFC-1918 IPスペース192.168.0.0/24)を使用していて、そのネットワークに接続していない場合は、外部から別の方法でログインします。基本的にはif-else条件です。

現在のIPv4ホストアドレス(少なくともmacOSでは)を返すコマンドは次のとおりです。

ifconfig en0 | grep 'inet' | awk '$1 == "inet" { print $2 }'

en0を必要に応じて使用されているインターフェイスに置き換えます。これは私のMacのWi-Fiです。)

これはIPv4アドレスを返します。このコマンドは何らかの関数(TCLがプロシージャを呼び出すようです)によって呼び出され、その出力がif-else条件に戻され、適切なコマンドセットが実行されてスクリプトが終了する必要があると考えていました。

単純なif-elseを実行することはできますが、コマンドからの標準出力をスクリプトに組み込む方法がわかりません。何か案は?

1
user1004512

Tclでコマンドの出力を取得するには、execを使用します。

例えば、 set myvar [exec "date -u"]

1
user1686