#☆やりたいこと
mysqlのパスワード変更(mysql_secure_installation)のために「B.sh」を作成して
expect文を書いていました。そしてvagrant up時のインストール中に現在の初期パスワードを下記のように聞かれます。
Enter password for user root:
上記の質問に答えるのに「B.sh」の中に'temporary password'をまず定義して、send "$初期パス\r"というかたちで書いていきたいです。
※環境はLinuxです。
イメージ図
INIPASS='初期パス'
expect -c "
"Enter password for user root:" {
send "$INIPASS\r"
"
#☆実行したこと、わからないこと
構造としては「A.sh」のプロビジョニング(VagrantFile)には下記のようにexpectのインストールと「B.sh」の実行コマンドを書いています
A.sh
yum install -y expect bash /vagrant/B.sh
「B.sh」の冒頭部分を下記のように書いて実行していますがNo such file or directoryのエラーになってしまいます。
B.sh
1 ■mysql初期パス
2 INIPASS=''grep 'temporary password' /var/log/mysqld.log | sed -e "s/.*root@localhost: //"''
3
4 ■mysqlのパスワード変更
5 expect -c "
6 spawn mysql_secure_installation
7 expect "Enter password for user root:"
8 send "$INIPASS\r
9 "
下記は実際のエラー文です。
/vagrant/B.sh: line 2: password /var/log/mysqld.log | sed -e "s/.*root@localhost: //": No such file or directory
grepコマンドで初期パスが記述されてるところにアクセスし、sedで'パスワード'の部分のみをとるように書きました。
しっかりパスの指定もしていますし、実際に環境でそのパスとファイルがあることは確認していますしログもありました。
なのでファイルやディレクトリがありませんとくると全く理解が出来ないです。私の書き方が間違えているのでしょうか。
お詳しい方、ぜひご教授頂きたいです。
あなたの回答
tips
プレビュー