「expect」を使用して起動された SSH シェルが全幅ではありません。どうすれば修正できますか?

「expect」を使用して起動された SSH シェルが全幅ではありません。どうすれば修正できますか?

Unity ランチャーから SSH に自動ログインするために expect を使用しています。コマンドは次のようになります。

gnome-terminal -t SSH1 -e "expect -c 'spawn ssh [email protected] ; expect assword ; send \\"password123\\n\\" ; interact'"

これは自動的にログインするにはうまく機能しますが、gnome-terminal ウィンドウを最大化すると、次のように、ウィンドウがデフォルトのサイズであるかのように、ssh シェルの内容は小さいままになります。

スクリーンショット

最初は、gnome-terminal がデフォルト サイズで起動され、何らかの理由で最大化しても ssh のもののサイズが変更されなかったためだと思いましたが、gnome-terminal --window --maximizeコマンドに追加しても同じ問題が残り、ウィンドウは最大化されて起動しますが、ssh シェルのテキストは依然としてデフォルト ターミナルのサイズのままです。

また、ターミナルを開いて上部にそのコマンドを入力すると、Unity ランチャーから起動した場合と同じ問題が発生します。

この原因と修正方法について何かアイデアはありますか?

答え1

expect スクリプトの先頭で以下を使用します。

#trap sigwinch and pass it to the child we spawned
trap {
 set rows [stty rows]
 set cols [stty columns]
 stty rows $rows columns $cols < $spawn_out(slave,name)
} WINCH

答え2

望む効果を得るためのより良い方法は、次のようなSSHキーを使用することです。エンゾティブ提案されました。

初め

$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ ssh-keygen -t rsa

各プロンプトで Enter キーを押し、フィールドを空白のままにしておくと、パスワードのないデフォルトのキーが作成されます。これが必要な状態です。

次に、公開鍵をサーバーにプッシュします。

$ ssh-copy-id [email protected]

最後に、次のコマンドでランチャーを作成します。

gnome-terminal -t SSH1 -x ssh [email protected]

答え3

これは、Expect が端末設定に使用する環境変数に関係しています。

これは、Expect スクリプトの先頭に次の行を追加することで簡単に修正できます。

set ::env(TERM) vt100

色分けされた文字があるかどうかを確認しました。色分けされた文字を表示したい場合は、次の方法も試してください。

set ::env(TERM) xterm

答え4

コードに以下を追加します:

trap {
    set XZ [stty rows   ]
    set YZ [stty columns]
    stty rows $XZ columns $YZ < $spawn_out(slave,name)
} WINCH

これはUbuntu 17.10で動作しているようです

関連情報