采用腳本自動填寫具有交互式命令的方法


  采用腳本自動填寫具有交互式命令的方法

  在我們安裝完數據庫mariadb之后,啟動數據庫,然后需要手動執行mysql_secure_installation進行安全設置,比如設置數據庫的密碼等等,設置完成之后我們才可以使用數據庫。然而在我們采用腳本執行數據安裝過程中,如何在數據庫安全設置的命令執行后,自動輸入我們要設置的數據庫密碼。這里可以提供一個可以對交互式命令自動填寫的方法,那就是expect。

1、安裝mariadb

  yum install mariadb mariadb-server python2-PyMySQL -y

2、數據庫配置

  按如下方法配置數據的配置文件:

  vim /etc/my.cnf.d/openstack.cnf

[mysqld] bind-address = $CONTROLLER_IP default-storage-engine = innodb innodb_file_per_table = on max_connections = 4096 collation-server = utf8_general_ci character-set-server = utf8

  啟動數據庫服務

  systemctl restart mariadb.service

  systemctl status mariadb.service

3、利用腳本執行數據庫安全設置

  首先安裝expect軟件:yum install expect -y

  編寫執行腳本,如/root/install/mysqlinstall.sh,腳本內容如下:

#!/usr/bin/expect spawn mysql_secure_installation expect "Enter current password for root (enter for none):" send "\r" expect "Set root password? " send "Y\r" expect "New password: " send "root\r" expect "Re-enter new password: " send "root\r" expect "Remove anonymous users?" send "Y\r" expect "Disallow root login remotely?" send "n\r" expect "Remove test database and access to it?" send "Y\r" expect "Reload privilege tables now?" send "Y\r" interact

  備注:

  Spawn后邊填寫我們需要執行的命令

  expect "xxx "其中xxx表示提示我們輸入字符的關鍵字

  \r表示不輸入任何內容直接回車

  Y\r表示輸入Y然后回車

  root\r表示輸入root然后回車,這里我設置密碼為root

  注意:執行腳本不能用bash執行,用./root/install/mysqlinstall.sh執行腳本

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM