구성 파일을 사용하여 .sh
쉘이나 파일을 생성할 수 있습니까 ?.command
터미널을 통해 웹사이트를 백업하고 일부 데이터를 구성 파일에 저장하고 셸에서 이를 실행하도록 해야 합니다.
예를 들어 사용자 이름, 비밀번호, SSH ID 등이 있습니다.
#!/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"
답변1
settings
설정을 변수로 사용하여 파일(예: )을 만듭니다 .
username='foo'
pass='bar'
website='baz'
database='yak'
그런 다음 스크립트에서 파일을 소싱하면 변수에 액세스할 수 있습니다.
. settings
echo $username # <- this will print "foo"
두 번째 "질문"과 관련하여 호스트가 여러 개인 경우 여러 구성 파일을 갖고 스크립트에 인수로 전달된 파일을 소스로 지정할 수 있습니다. 예를 들어, 이라는 구성 파일을 만듭니다 site1
.
다음으로 스크립트를 호출하세요../backup.sh site1
. $1 # <- this will load the file "site1"
echo $username # <- this will print "foo"
백업 스크립트의 경우 이는 다음을 의미합니다.
#!/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
답변2
다른 옵션은 텍스트 파일을 만들고 while 루프를 사용하여 해당 파일에 한 줄씩 액세스하는 것입니다.
답변3
mkdir -p Example.app/Contents/MacOS`
cp script.sh Example.app/Contents/MacOS/Example
...그렇다면 효과가 있을 것입니다. 이 기사사용자 정의 아이콘을 얻는 방법을 포함하여 더 자세한 지침이 있습니다.
수동으로 작업하지 않고도 정상적으로 실행할 수 있는 응용 프로그램을 구축하는 방법으로 Automator 또는 AppleScript Studio를 고려할 수도 있습니다.
답변4
# 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