我有一个脚本,它将通过 mysqldump 备份 mysql 数据库。我想在此脚本中添加另一个选项,以便在转储成功或失败时发送自动电子邮件。
这是脚本:
#!/bin/sh
BACKUP=/data/backup/sql2/new_backup/daily
cd $BACKUP
mkdir `date '+%d-%m-%Y'`
NOW=$(date +"%d-%m-%Y")
MUSER="root"
MPASS="mypass"
MHOST="sql4"
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
GZIP="$(which gzip)"
DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')"
for db in $DBS
do
FILE=$BACKUP/$NOW/mysql-$db.$NOW-$(date +"%T").sql.gz
$MYSQLDUMP -u $MUSER -h $MHOST -p$MPASS --lock-all-tables $db | $GZIP -9 > $FILE
done
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
一些公司使用 FTP 来发布我们从那时起需要的更新,是否有软件可以自动化?或者我会为这个过程编写脚本?有任何想法吗?
我是一名新手服务器管理员,最近从 Slicehost.com 购买了一个帐户并使用它来托管一些个人网站,因此我可以了解更多信息(我主要是 Web 开发人员)。
几年前,我记得在 Windows 上使用批处理脚本可以让我自动化某些基本的事情。Unix 上有这样的东西吗?
我想在 Apache2 中自动设置新域,因此基本上是创建目录、设置权限、在 sites-available 中创建配置文件,然后运行 a2ensite 命令,最后重新启动 Apache。
这可以从我可以从命令行运行的基本脚本中实现吗?您可以提供任何基本的指示和指导,我们将不胜感激。
谢谢!
我正在使用 Windows XP 并想创建一个批处理文件,删除除All Users和之外的所有用户数据文件夹Default User。我怎样才能做到这一点?
我正在寻找一个简单的脚本(可以在 Windows 平台上执行)来 ping 所有机器,并将“On”机器(将回复的机器)的 IP 写入文本文件。
Ubuntu 9.10
嗨,大家好,
我想创建一个脚本,它会自动更新 .htaccess 文件中的一行。有人可以指点我一些关于创建基本“查找和替换”脚本的说明吗?
我正在想象一些基本上说“寻找特殊标记#ABC和#XYZ...删除标记之间的条目并将其替换为'foo'”的东西。
我在 csh 脚本中有以下相关行:
#!/bin/csh -xv
set dvar = `date +"^%m\/%d\/%y"`
set filedate = `date +%b%d%Y`
set grepstring = "grep "\"$dvar\"" </home/user/log/logfile"
set outstring = ">> serverlog_$filedate.txt"
grep "$dvar" <logfile >serverlog_$filedate.txt
ssh SERVER1 \"\"$grepstring\"\" $outstring
Run Code Online (Sandbox Code Playgroud)
本地日志文件上的第一个 grep 效果很好,但 SSH grep 将其输出写入远程目录。
该行是从批处理文件中出来的:
ssh SERVER1 ""grep "^01\/05\/10" <home/user/log/logfile"" >> serverlog_Jan052010.txt
Run Code Online (Sandbox Code Playgroud)
当我输入它时(当然少了一组引号)它工作正常,我只是无法从 csh 脚本中得到它。
你如何让这个命令输出到本地机器上的指定文件?
编辑: 这是由于 womble 起作用的最终结果:
#!/bin/csh
set dvar = `date +"%m\/%d\/%y"`
set filedate = `date +%b%d%Y`
grep "^$dvar" logfile > serverlog_$filedate.txt
ssh SERVER1 grep "^$dvar" /home/user/log/logfile >> serverlog_$filedate.txt
Run Code Online (Sandbox Code Playgroud) 如果我从命令行执行它,我有一个可以正常工作的命令......但是当我把它放在一个 init.d 脚本中时它不会启动(好吧..它启动但具有与运行时不同的行为直接地)。
知道为什么这不适用于 init 脚本吗?
命令是: bluepill load /var/www/html/bluepill.conf
init.d 脚本是:
#!/bin/sh
## Based on http://www.novell.com/coolsolutions/feature/15380.html
# chkconfig: 345 99 1
# processname: solr
# Provides: bluepill
# Default-Start: 3 4 5
# Default-Stop: 0 1 2 6
# Short-Description: bluepill daemon, providing process monitoring
# Description: Bluepill
# Check for missing binaries
BLUEPILL_BIN=/usr/local/bin/bluepill
test -x $BLUEPILL_BIN || { echo "$BLUEPILL_BIN not installed";
if [ "$1" = "stop" ]; then exit 0;
else exit 5; fi; }
# Check …Run Code Online (Sandbox Code Playgroud) 我创建了一个非常简单的脚本(见下文),但无法使其正常运行。我总是收到消息说
line 5: syntax error near unexpected token 'fi'
line 5: 'fi'
Run Code Online (Sandbox Code Playgroud)
当我尝试执行此脚本时。
#!/bin/sh
rm /opt/file_name
if $? -ne 0 then
echo 'error'
fi
exit
Run Code Online (Sandbox Code Playgroud)
如果这有什么不同,我会在 Red Hat Linux 上运行它。
如果有人可以帮助确定 if 语句有什么问题,我将不胜感激。
账单
scripting ×10
linux ×4
shell ×3
unix ×2
apache-2.2 ×1
automation ×1
batch ×1
centos ×1
ftp ×1
inittab ×1
networking ×1
ping ×1
redirection ×1
ssh ×1
syntax ×1
ubuntu ×1
windows ×1
windows-xp ×1