Ist es möglich, eine .sh
Shell oder .command
Datei 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