1. 程式人生 > >采用腳本自動填寫具有交互式命令的方法

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

conn 數據庫安全 reload iad col isa tar rest enter

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

  在我們安裝完數據庫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執行腳本

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