わかりました、(ちょっとばかげているので) 説明しませんが、OS X で SSH を、たとえば 10 秒ごとに有効にするシェル スクリプトを作成する必要があります。はい、ばかげている/無意味に聞こえることはわかっていますが、理由があります。
明確にするために、ルートパスワードは知っていますが(login root
ターミナルで正常に実行できます)、スクリプトは管理者以外のユーザーのログイン時に実行されます。
スクリプトは、標準 (非管理者) アカウントで起動エージェントとして実行され、SSH を有効にできるように、ルート (たまたまパスワードを知っている) に昇格する必要があります。
を使用してみましexpect
たが、役に立ちませんでした (OS X での動作を拒否するだけです)。Bash スクリプトでパスワードを渡す唯一の他のオプションは を使用することecho $pass | sudo -S $command
ですが、それは標準ユーザーがsudo
,そしてそれはうまくいきません。
echo $pass | sudo -S login root
、echo "1234" | sudo -S su root
、 を試しecho "1234" | sudo -S su
ましたが、正しいパスワードをエコーしているにもかかわらず、すべて「申し訳ありませんが、もう一度やり直してください。」 が返されますlogin root
。
とにかく、私の質問は、sudo
スクリプトを実行している現在の標準アカウントとは対照的に、root として指定したい Bash をどのように指定できるかということだと思います。または、通常のユーザーの下で実行すると、ユーザー入力を必要とせずに、自分自身をルートまたは少なくとも管理アカウントに昇格させるスクリプトを作成するにはどうすればよいですか。もちろん、ルートへのパスワードを知っていると仮定します。
シナリオが本当に「これを行うためにスクリプトが必要な理由」に聞こえることは知っていますが、助けてください。本当に感謝しています。これが私の現在の非動作コードです。