毎日リモートサーバーにログインして、同じ一連のタスクを実行する必要があります。私は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はユーザーからの入力を期待しています。
すべてのコマンドをユーザー入力なしで実行する必要があります。
重要なこと:
私はrootユーザーではありません
パスワードなしでuser1
に切り替えるために許可されたアクセス
PuTTYのみを使用するという制約があります(Plinkのインストールは許可されていません)
command.txt
に含まれるコマンドは、マスターシェル 1つずつ実行されるためです。
したがって、マスターシェルは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