1

SSH で接続する必要がある一連のデバイスがあり、デバイス名とネットワーク設定を変更するいくつかのファイルを変更します。

ファイルには、次のようなデータが含まれています。

NETWORK_ETH1_CLIENTIP_LIST='10.47.19.182'

HOSTNAME="c50"

パテを使用してシステムに SSH 接続し、nano を使用して各ファイルを変更しています。

スクリプトを作成するのは簡単だと思いますが、やりたいことに対する Linux コマンドがよくわかりません。

「HOSTNAME」などの指定されたテキスト ファイル内の文字列を検索し、見つかった行を新しい HOSTNAME に置き換えることができる Linux のコマンドはありますか?

私は現在、バッチファイルから呼び出すいくつかの簡単なシステムチェックのために plink を使用しています:

plink.exe -pw PASSWORD USERNAME@192.168.77.77 -m Commands/SystemChecks.txt

ユーザー名とパスワードは省略されています。SystemChecks には、デバイスが正常に変更されたかどうかをテストするためのいくつかの基本的なルックアップ テーブルと ping コマンドなどが含まれています。

Linux コマンドを使用してデータ (ホスト名、IP アドレス、ネットマスクなど) を検索および置換する方法を見つけてください。

4

2 に答える 2

1
echo 'HOSTNAME="c50"' | sed 's/HOSTNAME="c50"/HOSTNAME="c60"/g'

コマンドを使用するsedと、置換を簡単に実現できます。

というファイルがfile.confあり、そのファイルに次のようなコンテンツがあるとします。

NETWORK_ETH1_CLIENTIP_LIST='10.47.19.182'
HOSTNAME="c50"

HOSTNAME="c50"したがって、値をに変更したい場合は、次の方法でHOSTNAME="d10000"使用できます。sed

sed -i 's/HOSTNAME="c50"/HOSTNAME="d10000"/g' file.conf
于 2013-01-23T02:38:23.657 に答える
1

sed を使用して行を吹き飛ばし、コンテンツをエコーで書き直すことができます。値だけを置き換えるもっとエレガントな方法があると確信しています

target='/path/to/target_file'
sed -i "/HOSTNAME/d" $target
echo "HOSTNAME=\"newhostname\"" >> $target
于 2013-01-23T02:40:33.843 に答える