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で動作しているようです