shell 脚本获取 ssh 远程错误

shell script get ssh remote error

我正在尝试制作一个远程 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}"

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

希望有人能给我指点,先谢谢了。

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

ssh ... 2>/tmp/logerrors

注意 2 和 > 之间没有 space。您可以通过将 >> "${LOGFILE}" 替换为

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

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