Kann ich eine Konfigurationsdatei für ein Shell-Skript erstellen?

Kann ich eine Konfigurationsdatei für ein Shell-Skript erstellen?

Ist es möglich, eine .shShell oder .commandDatei mit einer Konfigurationsdatei zu erstellen?

Ich muss Websites über das Terminal sichern, einige Daten in Konfigurationsdateien einfügen und sie von der Shell ausführen lassen.

Zum Beispiel Benutzername, Passwort, SSH-ID usw.

#!/bin/bash
ssh [email protected] "tar cjvf webfilesbackup-date-`date +%Y%m%d`.tar.bz2 public_html/"    
ssh [email protected] "mysqldump -u user_admin -ppass database_1 > databasebackup-`date +%Y%m%d`-db.sql"
scp [email protected]:webfilesbackup-date-`date +%Y%m%d`.tar.bz2 ~/backup/
scp [email protected]:databasebackup-`date +%Y%m%d`-db.sql ~/backup/
ssh [email protected] "rm -f webfilesbackup-date-`date +%Y%m%d`.tar.bz2"
ssh [email protected] "rm -f databasebackup-`date +%Y%m%d`-db.sql"

Antwort1

Erstellen Sie eine Datei (zB settings) mit Ihren Einstellungen als Variablen:

username='foo'
pass='bar'
website='baz'
database='yak'

Rufen Sie dann die Datei aus Ihrem Skript ab und Sie können auf die Variablen zugreifen:

. settings
echo $username     # <- this will print "foo"

Zu Ihrer zweiten „Frage“: Wenn Sie mehrere Hosts haben, können Sie einfach mehrere Konfigurationsdateien haben und die als Quelle verwenden, die als Argument an Ihr Skript übergeben wird. Erstellen Sie beispielsweise eine Konfigurationsdatei mit dem Namen site1.

Rufen Sie Ihr Skript auf mit./backup.sh site1

. $1               # <- this will load the file "site1"
echo $username     # <- this will print "foo"

Mit Ihrem Backup-Skript würde das bedeuten:

#!/bin/bash
. $1
ssh [email protected] "tar cjvf webfilesbackup-date-`date +%Y%m%d`.tar.bz2 public_html/"
ssh [email protected] "mysqldump -u $user -p$pass $database > databasebackup-`date +%Y%m%d`-db.sql"
# ... and so on

Antwort2

Die andere Möglichkeit besteht darin, einfach eine Textdatei zu erstellen und mit einer While-Schleife zeilenweise auf die Datei zuzugreifen.

Antwort3

mkdir -p Example.app/Contents/MacOS`
cp script.sh Example.app/Contents/MacOS/Example

...und das wird klappen. Dieser Artikelenthält ausführlichere Anweisungen, einschließlich Informationen zum Erhalten benutzerdefinierter Symbole.

Sie können sich auch Automator oder AppleScript Studio als Möglichkeiten zum Erstellen von Anwendungen ansehen, die reibungslos laufen, ohne dass Sie dies manuell tun müssen.

Antwort4

     # parse the ini like $0.hostname.conf and set the variables
     # place a $0.`hostname -s`.conf file in the same dir as your script
     # set here any VarName=VarValue
     # use ; for comments - you will get host independant conf file 
     # for your bash scripts - [examle usage :][1] 
     doParseIniFile(){
        eval `sed -e 's/[[:space:]]*\=[[:space:]]*/=/g' \
            -e 's/;.*$//' \
            -e 's/[[:space:]]*$//' \
            -e 's/^[[:space:]]*//' \
            -e "s/^\(.*\)=\([^\"']*\)$/\1=\"\2\"/" \
           < $IniFile \
            | sed -n -e "/^\[$IniSection\]/,/^\s*\[/{/^[^;].*\=.*/p;}"`
     }
     #eof function doParseIniFile

verwandte Informationen