バッチファイル経由で PuTTY にログインした後、リモートサーバーで sudo を使用してコマンドを実行する

バッチファイル経由で PuTTY にログインした後、リモートサーバーで sudo を使用してコマンドを実行する

毎日リモート サーバーにログインして、同じ一連のタスクを実行する必要があります。私は Windows プラットフォームを使用しており、リモート サーバーは Unix です。リモート サーバーにログインするには PuTTY を使用します。手作業を減らすには、このタスクを自動化する必要があります。

このコードを試してみました:

start putty.exe -ssh -load session -l username -pw password -m command.txt -t

内容command.txt:

sudo su - user1 
ls 
cd directory

最初のコマンドのみcommand.txtが機能し、その後 PuTTY はユーザーからの入力を待機します。

すべてのコマンドをユーザー入力なしで実行する必要があります。

重要なこと:

  • 私はルートユーザーではありません

  • user1パスワードなしで切り替えるためのアクセスが許可されました

  • PuTTYのみを使用するという制約があります(Plinkのインストールは許可されていません)

答え1

に含まれるコマンドはcommand.txtマスターシェル一つずつ。

したがって、マスター シェルは を実行しsudo、それが終了するのを待ってから、他のコマンド (lsおよびcd) に進みます。 はsudo終了しません (少なくともそれ自体では終了しません)。

lsとをcd内で実行したい場合子供の殻によって実行されますsu

suコマンドを実行するように指示する必要があります。

これは動作するはずです:

sudo su - -c "ls ; cd directory" user1

またはこれ

echo "ls; cd directory" | sudo su - user1

ただし、実際にはシェルで作業を継続したいと想定しています。一方、上記はコマンドが実行されると終了します。

コマンドのリストにシェルを追加します。

sudo su - -c "ls ; cd directory ; /bin/bash" user1

または

echo "ls ; cd directory ; /bin/bash" | sudo su - user1

関連情報