
毎日リモート サーバーにログインして、同じ一連のタスクを実行する必要があります。私は 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