複数のサーバーで次の手順を実行する必要があります。
- ユーザー名でログイン
- 入力
sudo su -
- 入力
amCLI -l 32/1 | grep Firmware
そこで、これをすべて 1 つのスクリプトに記述したいと考えました。私のアイデアは次のとおりです。
#!bin/bash
for hostname in DPM-BZ0201 DPM-BZ0202
do
ssh -n vneudeck@$hostname "sudo su-; amCLI -l 32/1 | grep Firmware"
done
または
#!bin/bash
for hostname in DPM-BZ0201 DPM-BZ0202
do
ssh -n vneudeck@$hostname "sudo amCLI -l 32/1 | grep Firmware"
done
ただし、どちらも機能しません。
答え1
より良い解決策は、ユーザーが/full/path/to/amCLI
パスワードを入力せずに実行できるように sudo を設定することです。
そうすると、
#!bin/bash
for hostname in DPM-BZ0201 DPM-BZ0202
do
ssh -n vneudeck@$hostname sudo /full/path/to/amCLI -l 32/1 | grep Firmware
done
答え2
vneudeck@$hostname を二重引用符で囲むと役立つかもしれません。su と - の間にはスペースを入れないでください。役立つことを願っています。
答え3
最初のものは機能しません:
sudo su -; amCLI -l 32/1 | grep Firmware
これは を実行しsudo su -
、これが返されたとき (つまり、root としてコマンドの処理が完了して終了したとき) に amCLI を実行します。( の代替として も使用できますが、より多くの機能がsudo su
あると思います。)sudo -s
sudo su -
2 番目のバージョンは、いくつかの条件を満たせば機能する可能性があります。sudo
パスワードを尋ねてはならず、amCLI
PATH 内にある必要があります ( と入力すると設定される可能性のある root のパスではなく、sudo がユーザーのパスを使用するため、ユーザーのパス)。 などのsudo su -
へのフルパスを指定してみてください。amCLI
/usr/local/sbin/amCLI