今まで知らなかったのだが、expectでは以下のようにログファイルを指定する事でscriptコマンドのようにターミナルログを取得することが可能なようだ。

#!/bin/bash
expect -c "
  trap {
   set rows [stty rows]
   set cols [stty columns]
   stty rows \$rows columns \$cols < \$spawn_out(slave,name)
  } WINCH

  set host hostname
  set user username
  set pass Password
  set...

ごくたまに、以下のようなexpectを使ったスクリプトを作ってログイン時のパスワード入力やら事前処理のコマンドやらを自動入力させることがある。

#!/bin/bash
expect -c "
  spawn ssh user@host
  expect \"s password:\"
  send \"Password\n\"
  interact
"

ただ、このようにしてログインした場合、使用中にターミナルウィンドウのサイズをいじった際に一緒にリサイズされない事がある。 「stty size」コマンドでターミナルのサイズを取得できるのだけど、ターミナルのウィンドウサイズをいじって...


対話式のプログラムを自動化させる場合、色々と方法はあるのだが、シェルスクリプトとして作成するならばやはりexpectが一番利用されているものだろう。
そんなexpectコマンドを用いたスクリプトを自動生成してくれるのが、『autoexpect』コマンドだ。

イメージとしては、Excelにある「マクロの記録」をイメージして貰えればいいだろう。

1.インストール

まずはインストールから。
以下のコマンドを実行し、『autoexpect』コマンドを含むパッケージをインストールする。

Debian/Ubuntuの場合

apt-get install expect-dev

R

...
ターミナルからパスワード入力無しでssh接続する3つの方法

sshコマンドでログインをする際、通常であればログインするユーザのパスワードを求められる。
セキュリティ上致し方ないものではあるのだが、時には煩わしいのも事実。スクリプトの中でssh接続をさせたい時には厄介だ。

という訳で、今回はこのパスワード入力無しでssh接続を行う方法について記述する。

1.鍵認証方式に切り替える

そもそも、ssh接続の認証方式はパスワード認証だけではない。
認証方式はいくつかあるが、そのうちの一つである鍵認証方式にすることで、パスワードを入力せずにログインすることが可能となる。

サーバ/クライアント側でそれぞれ設定が必要となるが、今回紹介する3つの方...