我可以为 shell 脚本创建配置文件吗?

0 ssh bash shell macos

是否可以使用配置文件创建.sh外壳或.command文件?

我需要通过终端备份网站,并能够将一些数据放入配置文件,并让 shell 执行它。

例如,用户名、密码、ssh id 等。

#!/bin/bash
ssh admin@host.com "tar cjvf webfilesbackup-date-`date +%Y%m%d`.tar.bz2 public_html/"    
ssh admin@host.com "mysqldump -u user_admin -ppass database_1 > databasebackup-`date +%Y%m%d`-db.sql"
scp admin@host.com:webfilesbackup-date-`date +%Y%m%d`.tar.bz2 ~/backup/
scp admin@host.com:databasebackup-`date +%Y%m%d`-db.sql ~/backup/
ssh admin@host.com "rm -f webfilesbackup-date-`date +%Y%m%d`.tar.bz2"
ssh admin@host.com "rm -f databasebackup-`date +%Y%m%d`-db.sql"
Run Code Online (Sandbox Code Playgroud)

jhe*_*ger 5

settings使用您的设置作为变量创建一个文件(例如):

username='foo'
pass='bar'
website='baz'
database='yak'
Run Code Online (Sandbox Code Playgroud)

然后从脚本中获取文件,您将能够访问变量:

. settings
echo $username     # <- this will print "foo"
Run Code Online (Sandbox Code Playgroud)

关于您的第二个“问题”,如果您有多个主机,您可以拥有多个配置文件,并将其作为参数传递给脚本。例如,创建一个名为site1.

调用你的脚本 ./backup.sh site1

. $1               # <- this will load the file "site1"
echo $username     # <- this will print "foo"
Run Code Online (Sandbox Code Playgroud)

使用您的备份脚本,这意味着:

#!/bin/bash
. $1
ssh admin@host.com "tar cjvf webfilesbackup-date-`date +%Y%m%d`.tar.bz2 public_html/"
ssh admin@host.com "mysqldump -u $user -p$pass $database > databasebackup-`date +%Y%m%d`-db.sql"
# ... and so on
Run Code Online (Sandbox Code Playgroud)

  • 我不会附加“.sh”,因为它不打算执行。 (3认同)