Articles of bash

我怎样才能将两个命令合并到压缩和解压缩的日志文件中?

我正在运行这个命令来从服务器的auth.log获得一个失败的login尝试logging,它运作良好: sudo cat /var/log/auth.{log,log.1} | grep 'Failed password' | grep sshd | awk '{print $1,$2}' | sort -k 1,1M -k 2n | uniq -c 但问题是 – 就像世界上的每一台服务器 – 我有一些由日志旋转创build的GZip压缩文件,不会被这个命令parsing: -rw-r—– 1 syslog adm 7822722 Oct 31 13:44 /var/log/auth.log -rw-r—– 1 syslog adm 12532511 Oct 25 06:59 /var/log/auth.log.1 -rw-r—– 1 syslog adm 2250939 Oct 18 06:55 […]

Bash命令在terminal运行,但不能在Jenkins / Bash脚本中运行

我正在使用Jenkins构buildHTML文档并将其部署到本地Apache Web服务器供我们的开发人员使用。 当我在terminal中运行命令时,一切安装正确(certificate服务器安装正确)。 但是,当从Jenkins中运行相同的命令时,它们会被调用,但没有任何更改。 它不会删除html.zip (第18行),不会将文件移动到/var/html/www/subdir ,并且不会报告curl请求失败之外的任何错误。 我有点失落,因为我做错了什么。 我应该注意到,我把这个脚本叫做sudo 。 我知道这是不安全的,但我想我会尝试让脚本先工作,然后再改变。 为了确保user不会遇到安装文档的问题,我暂时允许它运行任何命令作为sudo没有密码。 再次,我知道这是不安全的,但本着试图消除variables的精神,我加了这个。 Jenkins像这样调用这个脚本: sudo ./documentation-publisher.sh 对脚本的权限是现在最less的限制,777.在脚本报告中调用ls -l : -rwxrwxrwx 1 devop developers 1144 Dec 3 10:29 documentation-publisher.sh 我试图从这个post的build议明确设置脚本的path,但没有注意到任何差异。 每个使用的命令的显式path也不会改变行为。 #!/bin/sh -x echo "Archiving generated HTML for transfer…" cd Example/docs/html/ zip -r html.zip ./ scp -i ~/.ssh/id_rsa html.zip [email protected]:/home/user ssh -i ~/.ssh/id_rsa [email protected] echo "Extracting […]

`输出| | gzip> $ file`不能覆盖$文件

我有一个每小时cron脚本,它需要一些输出(一个mysql转储),通过gzippipe道,并打算覆盖相同名称的文件。 当我以root身份手动运行它时,文件被覆盖。 当它由cron守护进程运行时,文件名会附加“.1”。 这一直在发生,所以过了一段时间,我有这样的文件很多: myfile.gz myfile.gz.1 myfile.gz.1.1 myfile.gz.1.1.1 myfile.gz.1.1.1.1 等等。 ps aux|grep crond显示守护进程正在以root身份运行。 我试过了: 重命名原始文件,推送输出,然后在完成时删除旧文件 在pipe道输出之前删除原始文件 但都没有按预期工作,我只是得到.1.1.1.1文件。 脚本看起来像这样(没什么特别的),位于/etc/cron.hourly的CentOS盒子里: #!/bin/bash DATE=`date +%H` DIR="/abs/path/to/dir" FILE="hourly-${DATE}.gz" OPTS="…" mysqldump $OPTS | gzip -9 > $DIR/$FILE 任何人都可以build议,为什么这个简单的操作没有按预期运行?

Bash:如何使用触摸和正则expression式复制时间戳?

由于这是更多的Bash问题,我认为这是比超级用户更适合serverfault,即使我正在谈论媒体文件。 我不得不对多个媒体文件进行批量转换,并且所有的输出文件都有一个新的时间戳。 /somedir/ file1.mpg (correct timestamp) file1.mpg.m4v (wrong timestamp) file2.mpg (correct timestamp) file2.mpg.m4v (wrong timestamp) … 我想要做的是时间戳的批处理副本,以便每个* .mpg.m4v获得相应的* .mpg文件的时间戳。 从我的search,看起来像我需要使用touch -r和一些正则expression式来处理这个。 我在正确的轨道上,有没有人有任何build议,我需要做正则expression式(我的正则expression式知识,坏,坏,坏)来处理这个?

预期脚本等待命令挂起

我有一个embedded到bash脚本中的期望脚本: #! /bin/bash # this function runs a command like 'ssh' and provides the password function with_password { expect << END spawn $2 expect *assword:* send — $1 interact wait END } # run "long_running_command" on the remote server with_password my_password "ssh my_user@some-server long_running_command" # rsync some data to the remote server with_password my_password "rsync […]

如何用脚本在linux上重命名远程文件

我想有一个(bash)脚本来重命名多个远程Linux服务器上的文件任何想法如何做? 谢谢。

当使用Sed时,权限被拒绝

我正在使用Sed来查找并replace文件中的string。 这是第一次使用它,所以我可能做错了, 我有一个名为“test.properties”的“root”所拥有的文件,我想用“cat”replace“world”。 所以我运行这个命令: sudo sed s/world/cat/ <test.properties >newtest.properties 它工作的很好,但是当我想写这样的SAME文件: sudo sed s/world/cat/ <test.properties >test.properties 它说“-bash:test.properties:权限被拒绝”,但我使用“sudo”,为什么被拒绝?

OS X Lion中的I / Oredirect

我有一个曾经工作的脚本,它依赖于使用TCP发送命令(事实上要处理的文件名)到侦听端口的进程。 所以我可以开火,告诉它听,说港口9999。 作为一个快速入侵,我将使用如下命令将streamredirect到端口9999: exec 3<> /dev/tcp/127.0.0.1/9999 然后我可以在我想批量处理所有文件的目录中运行find命令 find . -name "*.xml" -exec printf "$PWD/{} $PWD/{}\r\n" >&3 \; 自从我升级到Lion之后,我还没有尝试过,但是现在不起作用,给了我一个“坏文件描述符”响应。 任何人有任何想法?

egrep匹配组不打印?

我试图创build一个bash脚本,将使用egrep grep从一个文件的行。 我已经创build了应该将我想要的信息分组的正则expression式,问题是试图获得输出。 我一直在用下面的命令testing它,但是运行时没有打印任何东西。 如何打印 – {80}和断开连接之间的多行? egrep -E "^-{80}$\r?\n?([:ascii:]*)Disconnected from Server" testing.txt 文件:testing.txt Connected to the server: name here Some header text. More text to go though… ——————————————————————————– The information that I want, would be in here; Including this line as well #$ and this one. Disconnected from Server…

sshd如何知道调用shell?

当我inputssh remote-host command , sshd会为我运行bash -c command 。 sshd如何知道用-c选项调用bash ?