微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

pipe道stderr到系统日志里面的自动ftp脚本

我正在使用简单的脚本来自动化ftp。 该脚本如下所示:

ftp -nv $FTP_HOST<<END_FTP user $FTP_USER $FTP_PASS binary mkdir $REMOTE_DIR cd $REMOTE_DIR lcd $LOCAL put $FILE bye END_FTP

但我想pipestDERR到系统日志和STDOUT到一个日志文件。 通常我会这样做: ftp -nv $FTP_HOST 1>>ftp.log | logger<<END_FTP ftp -nv $FTP_HOST 1>>ftp.log | logger<<END_FTP但在这种情况下,由于<<END_FTP ,将<<END_FTP 。 我应该怎样做才能使脚本工作? 请注意,我只想在脚本中redirect来自FTP命令的输出,而不是整个脚本。

磁盘故障检测perl脚本

二进制代码在kern.log和

开源的Syslog守护进程的Windows

rsyslog EscapeControlCharactersOnReceive无法在omfwd模块中工作?

有没有办法将系统日志消息redirect到标准输出

这可以在不使用临时文件的情况下工作。 2>&1将错误输出发送到标准输出所在的位置 – 这是管道。 标准输出正在进行的变化 – 现在是文件 – 不会改变标准错误发生的地方。 所以,错误去logger和输出到ftp.log 。

ftp -nv $FTPHOST <<END_FTP 2>&1 >> ftp.log | logger user $FTP_USER $FTP_PASS binary mkdir $REMOTE_DIR cd $REMOTE_DIR lcd $LOCAL put $FILE bye END_FTP

怎么样:

exec > mylogfile; exec 2> >(logger -t myftpscript)

在你面前的ftp脚本

执行此I / O重定向的另一种方法是使用{ … }操作,因此:

{ ftp -nv $FTPHOST <<END_FTP >> ftp.log user $FTP_USER $FTP_PASS binary mkdir $REMOTE_DIR cd $REMOTE_DIR lcd $LOCAL put $FILE bye END_FTP # Optionally other commands here...stderr will go to logger too } 2>&1 | logger

当多个命令(而不是所有命令)需要相同的I / O重定向时,这通常是最好的机制。

在上下文中,我认为这个解决方案是最好的(但这是别人的答案,不是我的):

ftp -nv $FTPHOST <<END_FTP 2>&1 >> ftp.log | logger ... END_FTP

为什么不创建一个netrc文件,让它做你的登录和把你的文件

netrc文件可以让你登录,并允许你定义一个init宏来创建需要的目录,并把你想要的文件放在那里。 大多数ftp命令可以让你指定你想使用的netrc文件,所以你可以使用各种netrc文件来达到各种目的。

这是一个名为my_netrc的示例my_netrc文件

machine ftp_host user ftp_user password swordfish macrodef init binary mkdir my_dir cd my_dir put my_file bye

那么,你可以这样做:

$ ftp -v -Nmy_netrc $FTPHOST 2>&1 >> ftp.log | logger

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐