あるサーバーから別のサーバーに50台のプリンター設定をコピーしようとしています。注文する:
lpadmin -p printer_name -v printer_ip -E
そしてより多くのパラメータ。
あるテキストファイルにプリンタ名を入れ、もう一方のテキストファイルにプリンタIPを入れました。
Printername.txtには、別々の行にプリンタ名が含まれています。
Printerip.txtには、別の行にある同じプリンタのIPが含まれています。
これら2つのファイルのプリンタ名とプリンタIPを上記のコマンドのパラメータとして渡したいと思います。
catファイルでFor iを使用して1つのパラメータで実行する方法を知っていますが、2つのファイルでは実行できません。
答え1
貼り付けを使用して、各ファイルから1行をインポートできます。
paste Printername.txt Printerip.txt
次に、awk
次を使用してオプションパラメータを挿入します。
paste Printername.txt Printerip.txt | awk '{print "-p", $1, "-v", $2, "-E ..."}'
最後に、xargs
これをコマンドの引数として使用します。
paste Printername.txt Printerip.txt | awk '{print "-p", $1, "-v", $2, "-E ..."}' |
xargs -L1 lpadmin
-L1
xargs
コマンドを実行するたびに1行の入力を使用します。一部の分割が行われるため、-p
プリンタ名などが別の引数として渡されます。これは、プリンタ名にスペースやその他の特殊文字が含まれていない場合に最も効果的です。
または、withを使用してsh
入力xargs
をパラメータとして配置することもできます。
paste -d '\n' Printername.txt Printerip.txt | xargs -d '\n' -n2 sh -c 'lpadmin -p "$1" -v "$2" -E ...' _
答え2
join
を使用してこれら2つのファイルをリンクできます。おそらくxargs
、またはfor i in …
。