私はvncserverを初めて実行したときにパスワードを要求する部分を自動化しようとしました(passwdファイルを渡すフラグがあることを知っていますが、必要に応じて新しいファイルを作成することを好みます)。
#!/bin/bash
read -s PWD
/usr/bin/expect -d <<EOF
spawn /usr/bin/vncserver -geometry 1366x768 :1
expect "Password:"
send "$PWD\r"
expect "Verify:"
send "$PWD\r"
expect "Would you like to enter a view-only password"
send "n\r"
expect eof
EOF
ここでは-d
、デバッグ出力を表示するためにフラグを使用しており、globが少なくとも2番目に予想されたものと部分的に一致するように見えます(一度失敗し、2回目の試行後に一致します)。
また、パスワードを送信するために使用することもできます(ここでは「isthisevenworking」というパスワードの例を使用します)、うまくいくようです。
vncserverが動作している場合でも通常の出力が表示されますが、実行中のプロセスを見るとvncserverが実行されていません...(フォルダpasswd
にファイルがあるにもかかわらず.vnc
)
ただし、スクリプトの終了後に手動でvncを実行するか、次のようにスクリプトの最後に同じコマンドを追加すると、vncはサンプルパスワードとして機能します。
#!/bin/bash
read -s PWD
/usr/bin/expect -d <<EOF
spawn /usr/bin/vncserver -geometry 1366x768 :1
expect "Password:"
send "$PWD\r"
expect "Verify:"
send "$PWD\r"
expect "Would you like to enter a view-only password"
send "n\r"
expect eof
EOF
/usr/bin/vncserver -geometry 1366x768 :1
私が知りたいのは、vncserverコマンドが予想されるスクリプトの外で実行されているにもかかわらず、予想されるセクションの後になぜ実行されないのですか?
動作するのでスクリプトの最後に追加しても構いませんが、とにかく予想よりパスワードをたくさん設定した後に実行されるため、ちょっと不要な感じが...
編集:これが「予想」通りに機能しない理由がわかります。スクリプトが速く停止し始める前にvncserverが停止しているようです。次の手順を実行して、同じ操作を手動でシミュレートできます。
/usr/bin/vncserver -geometry 1366x768 :1
パスワードを2回入力し、+を入力してn
実行しますCtrl
。D
だから私は無限のタイムアウトを追加しようとしました。
#!/bin/bash
read -s PWD
/usr/bin/expect -d <<EOF
set timeout -1
spawn /usr/bin/vncserver -geometry 1366x768 :1
expect "Password:"
send "$PWD\r"
expect "Verify:"
send "$PWD\r"
expect "Would you like to enter a view-only password"
send "n\r"
expect eof
EOF
しかし、まだ動作しません。最後の試みsleep
:
#!/bin/bash
read -s PWD
/usr/bin/expect -d <<EOF
spawn /usr/bin/vncserver -geometry 1366x768 :1
expect "Password:"
send "$PWD\r"
expect "Verify:"
send "$PWD\r"
expect "Would you like to enter a view-only password"
send "n\r"
sleep 10
expect eof
sleep 10
EOF
それは役に立たない...
答え1
〜らしいこれ私の問題に関連する投稿です。だから私はそこに行き、2つの答え/アプローチを試しました。
#!/bin/bash
read -s PWD
/usr/bin/expect -d <<EOF
set timeout -1
spawn -ignore HUP /usr/bin/vncserver -geometry 1366x768 :1
expect "Password:"
send "$PWD\r"
expect "Verify:"
send "$PWD\r"
expect "Would you like to enter a view-only password"
send "n\r"
expect_background
expect eof
EOF
動作しませんが:
#!/bin/bash
read -s PWD
/usr/bin/expect -d <<EOF
set timeout -1
spawn screen bash
send "/usr/bin/vncserver -geometry 1366x768 :1\r"
expect "Password:"
send "$PWD\r"
expect "Verify:"
send "$PWD\r"
expect "Would you like to enter a view-only password"
send "n\r"
expect eof
EOF
すでに作業中です。