¿Puedo crear un archivo de configuración para un script de shell?

¿Puedo crear un archivo de configuración para un script de shell?

¿Es posible crear un .shshell o .commandun archivo con un archivo de configuración?

Necesito hacer una copia de seguridad de los sitios web a través de la Terminal y poder colocar algunos datos en los archivos de configuración y hacer que el Shell los ejecute.

Por ejemplo, el nombre de usuario, la contraseña, la identificación ssh, etc.

#!/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"

Respuesta1

Cree un archivo (por ejemplo settings, ) con su configuración como variables:

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

Luego obtenga el archivo de su script y podrá acceder a las variables:

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

Con respecto a su segunda "pregunta", si tiene varios hosts, puede tener varios archivos de configuración y obtener el que se pasa como argumento a su secuencia de comandos. Por ejemplo, cree un archivo de configuración llamado site1.

Llame a su guión con./backup.sh site1

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

Con su script de respaldo, esto significaría:

#!/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

Respuesta2

La otra opción es simplemente crear un archivo de texto y usar un bucle while para acceder a ese archivo línea por línea.

Respuesta3

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

...y eso funcionará. Este artículotiene instrucciones más detalladas, incluido cómo obtener íconos personalizados.

También puede considerar Automator o AppleScript Studio como formas de crear aplicaciones que puedan ejecutarse de manera sensata, sin tener que hacerlo a mano.

Respuesta4

     # 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

información relacionada