Download and insert salt string inside wordpress wp-config.php with Bash

前端 未结 10 2281
有刺的猬
有刺的猬 2021-02-13 06:27

How can I insert the content of the variable $SALT in a specific point (line or string) of a file like wp-contet.php from wordpress using Bash script?



        
10条回答
  •  执笔经年
    2021-02-13 06:55

    I tried the accepted solution:

    #!/bin/sh
    SALT=$(curl -L https://api.wordpress.org/secret-key/1.1/salt/)
    STRING='put your unique phrase here'
    printf '%s\n' "g/$STRING/d" a "$SALT" . w | ed -s wp-config.php
    

    However it does not work perfectly as for some reason it induces the SALTS to "move down" 1 line in the wp-config.php file each time it is used... it is not ideal if you are going to change SALTS automatically like every week, months with cron for example...

    A better solution for me was to create a little function that I call in my script. This function creates a file with the SALTS (deletes it at the end), deletes every lines containing one of the SALTS then just inserts the SALTS contained in the file in place of the initial SALTS. This works perfectly.

    fct_update_salts() {
        # Requires website name as target
    
        curl http://api.wordpress.org/secret-key/1.1/salt/ > ~/SALTS.txt
    
        var_initial_path1=`pwd`
        cd ~ #going to home directory
    
        # This scripts eliminates successively all SALT entries, replaces the last one by XXX as a marker, places SALTS.txt, below XXX and deletes XXX
        sudo sed -i "/SECURE_AUTH_KEY/d" $1/wp-config.php
        sudo sed -i "/LOGGED_IN_KEY/d" $1/wp-config.php
        sudo sed -i "/NONCE_KEY/d" $1/wp-config.php
        sudo sed -i "/AUTH_SALT/d" $1/wp-config.php
        sudo sed -i "/SECURE_AUTH_SALT/d" $1/wp-config.php
        sudo sed -i "/LOGGED_IN_SALT/d" $1/wp-config.php
        sudo sed -i "/NONCE_SALT/d" $1/wp-config.php
        sudo sed -i "/AUTH_KEY/cXXX" $1/wp-config.php
        sudo sed -i '/XXX/r SALTS.txt' $1/wp-config.php
        sudo sed -i "/XXX/d" $1/wp-config.php
        echo "SALTS REPLACED BY:"
        echo "====================="
        cat ~/SALTS.txt
        sudo rm -rf ~/SALTS.txt
        cd $var_initial_path1
    }
    

    The function is to be called in the script like this:

    # Reset SALTS
    fct_update_salts $SITE_PATH
    

    Where $SITE_PATH="/var/www/html/YOUR_WEBSITE" or whatever path works for you.

提交回复
热议问题