shell脚本获取ssh远程错误

时间:2015-07-10 09:57:36

标签: shell ssh

我正在尝试创建一个远程mysqldump,然后使用rsync下载它,这一切都运行良好,但我也想记录我得到的远程错误,我现在只在终端输出中看到。 我指的是像mysqldump: Got error: 1044: Access denied for user 'root'@'localhost' to database 'information_schema' when using LOCK TABLES?

这样的错误

这是我的代码的重要部分:

MYSQL_CMD="mysqldump -u ${MYSQL_USER} -p${MYSQL_PASS} $db -r /root/mysql_${db}.sql"
$SSH -p ${SSH_PORT} ${SSH_USER}@${SSH_HOST} "${MYSQL_CMD}" >> "${LOGFILE}"

在我的研究中,我只找到了获取退出代码和返回值的解决方案。

我希望有人能提前给我一个提示。

1 个答案:

答案 0 :(得分:1)

这些错误消息正在写入 stderr 。您可以使用2>2>>将其重定向到文件,就像使用>>>的stdout一样。例如:

ssh ... 2>/tmp/logerrors

注意2和>之间没有空格。通过将>> "${LOGFILE}"替换为

,您可以将stderr合并到与stdout相同的文件中
ssh ... &>> "${LOGFILE}"

同样,&>中没有空格,也可以写成>&