ssh を 1.2.3.4 に書き込んでから ls を呼び出すスクリプトを考えてみましょう。問題は、「ssh 1.2.3.4」という行が呼び出されると、パスワードが必要になるため、パスワードを入力してもフローが停止し、スクリプトが続行されないことです。パスワードが与えられた後、スクリプトを続行するにはどうすればよいですか?
どうも!
公開鍵認証を行いたい。ここにあなたを動かすためのいくつかのリソースがあります。
http://magicmonster.com/kb/net/ssh/auto_login.html
http://www.cs.rpi.edu/research/groups/vision/doc/auto/ssh/ssh_public_key_authentication.html
さらにいくつかのリンクを投稿しますが、十分な評判ポイントがありません。;) さらにヘルプが必要な場合は、「SSH 自動ログイン」または「SSH 公開鍵認証」でググってください。
login_to という名前の単純なログイン bash スクリプトを作成し、実行権限を付与します (chmod 744 login_to)
#!/bin/bash
if [ $1 = 'srv1' ]; then
echo 'srv1-pass' | pbcopy
ssh root@11.11.11.11
fi
if [ $1 = 'foo' ]; then
echo 'barbaz' | pbcopy
ssh -t dux@22.22.22.22 'cd ~/somedir/someotherdir; bash'
fi
今はこのように使っています
login_to srv1
login_to foo
パスワードの入力を求められたら、pate (ctrl+v または command+v) するだけでログインできます。
実際には ls をローカルで実行しようとしていますが、ssh セッションが開かれています。したがって、セッションが開かれるまで ls は実行されません。ls をリモートで実行する場合は、次を使用する必要があります
ssh username@host COMMAND
command は、実行するコマンドです。コマンドが呼び出されるとすぐに Ssh セッションが終了し、その出力を正常にキャプチャできます。
ssh を必要とするスクリプトには RSA 認証方式を使用することをお勧めします。
私はちょうどこのスクリプトを試しました:
#!/bin/sh
ssh vps1 ls
mkdir temp
cd temp
echo test > file.txt
そして、それは機能します。サーバーに接続して自宅を一覧表示できます。次に、ローカルに一時ディレクトリを作成し、そこに cd してから、内部に「test」を含む file.txt を作成します。