web-dev-qa-db-ja.com

SSH、次にシェルを変更する

本当に簡単な質問の可能性がありますが、誰かが親切にアドバイスを提供できるかどうか疑問に思っていました。

繰り返しのタスクを実行するために、システム管理者から提供された資格情報を使用して、リモートのSolarisサーバーに常にログインしています。ただし、BASHを使用して特定のタスクを実行する必要があるため、ログインするたびにシェルを変更する必要があります(csh-> bashから)。

これを行うことは大きな問題ではありませんが、1日に数回このタスクを繰り返す必要があるため、bashシェルへの変更は少し面倒であり、タスクを実行する前にシェルを変更することを忘れることがある場合もあります(また、BASHも好みます)。そう)。

リモートサーバーで必要なスクリプトをすぐに開始できるように、sshを使用してデフォルトのシェルを1行で変更できる方法はありますか?リモートサーバーと認証情報は共有されているので特に私には共有されていないため、ログインファイル(.loginや.cshrcなど)を変更する必要はありません。また、サーバーと資格情報が複数のユーザーによって使用されているため、サーバーの既定のシェルも変更したくありません。

誰かがそのような問題を回避する方法を知っていますか?任意の提案をいただければ幸いです。

17
user2511875

SSHは通常、引数として渡したコマンドを実行してから切断します。インタラクティブセッションを機能させるには、3つのオプションセットが必要です。

  • ssh -tは、SSHに実行を要求しているリモートコマンドと対話するために必要な疑似tty割り当てを強制します。
  • bash -lは対話型ログインシェルを起動します
  • csh -l -cはcshで対話型ログインシェルを起動し、次のコマンドを実行します

別のシェルを起動するには(つまり、デフォルトはcshであり、bashを起動したい):

ssh -t <user>@<server> "bash -l"

最初にcsh環境を取得するには、インタラクティブシェルを起動し、次にコマンドを渡してbashに切り替えます。

ssh -t <user>@<server> 'csh -l -c "bash"'
30
Beggarman