Articles of bash

我可以使用rsync创build仅更改文件的列表吗?

我在bash脚本中使用rsync来保持文件在几台服务器和NAS之间同步。 我遇到的一个问题是试图生成从rsync期间已经改变的文件的列表。 这个想法是,当我运行rsync时,我可以输出已经改变的文件到一个文本文件 – 更希望在内存中的数组 – 然后在脚本存在之前,我可以只运行更改文件的chown。 有没有人find一个方法来执行这样的任务? # specify the source directory source_directory=/Users/jason/Desktop/source # specify the destination directory # DO NOT ADD THE SAME DIRECTORY NAME AS RSYNC WILL CREATE IT FOR YOU destination_directory=/Users/jason/Desktop/destination # run the rsync command rsync -avz $source_directory $destination_directory # grab the changed items and save to an array or […]

如何在Mac OS X上的shell脚本中检索绝对文件名?

我想检索当前执行的脚本文件的绝对文件名。 链接也应该解决。 在Linux上,这似乎是这样做的: $(readlink -mn "$0") 但是在Mac OS X上, readlink似乎工作得非常不同。 我读过,这是使用 $(realpath $0) 在BSD中,但那也行不通。 Mac OS X没有realpath 。 任何想法?

SSH到一个经常更改IP的框中

我有一些经常更换IP的云盒子。 我ssh使用主机名,但每次服务器启动时,必须编辑known_hosts文件,因为这个错误消息: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that the RSA host key has just been changed. The fingerprint for the RSA key sent by the remote host […]

如何针对CVE-2014-6271和CVE-2014-7169中的bash漏洞修补RHEL 4?

昨天和今天(2014年9月24日)广泛报告了通过Bash远程执行代码的机制。http://seclists.org/oss-sec/2014/q3/650报告为CVE-2014-7169或CVE-2014 -6271 由于我愚蠢的原因,我公开解释,我负责运行RHEL 4的服务器,没有更新订阅。 我可以build立一个克隆来testing这个,但我希望有人会有一个直接的答案。 Centos 4中的/ bin / bash已经被修补,还是会被修复? 我可以将一个(大概修补的)Centos 4 / bin / bash插入我的RHEL系统,作为一个解决方法,将会给我几个星期的时间? (我需要到十二月十号)

如何在SSHlogin中使用自定义的.bashrc文件

我发现,与我正在合作的新公司,我经常需要访问寿命相对较短的Linux服务器。 在每台服务器上都有一个帐户,但是每当创build一个新帐户时,我都必须经历通过我的.bashrc传输的麻烦。 然而,在大约一个月的时间内,服务器将不再存在。 我也必须短时间访问许多其他服务器(分钟),但是由于我在很多服务器上工作,所以不值得通过我的.bashrc进行传输,这大大浪费了时间。 我不想改变服务器上的任何东西,但是我想知道是否有一个“per-connection”.bashrc的方法,所以无论何时我将SSH连接到服务器,我的设置都将用于该会话。 如果可能的话,如果我可以用其他configuration文件(如gitconfig文件)做同样的事情,那将会很好。

将文件的所有者权限复制到组权限

如何将文件的用户/所有者权限复制到组的权限? 例如,如果权限是755我希望他们成为775。 澄清:755 – > 775 123 – > 113 abc – > aac 奖金,如果我可以对目录中的所有文件recursion地做到这一点。 (也就是说,对于每个文件,拥有者权限都被复制到组权限中,每个文件可能具有不同的权限。)

无法从CRON运行AWS CLI(凭据)

尝试运行简单的AWS CLI备份脚本。 它通过包含文件中的行循环,将这些path备份到S3,并将输出转储到日志文件。 当我直接运行这个命令时,它运行没有任何错误。 当我通过CRON运行时,在输出日志中出现“Unable to locate credentials”错误。 shell脚本: AWS_CONFIG_FILE="~/.aws/config" while read p; do /usr/local/bin/aws s3 cp $p s3://PATH/TO/BUCKET –recursive >> /PATH/TO/LOG 2>&1 done </PATH/TO/INCLUDE/include.txt 我开始看到这个错误之后,我只添加了行到configuration文件,认为这可能会解决它(即使我非常确定这是AWS默认情况下)。 Shell脚本以root身份运行。 我可以在指定的位置看到AWSconfiguration文件。 而且这一切对我来说都很好(就像我说的,它在CRON以外运行良好)。

如何使用find命令删除匹配模式的文件?

我正在编写一个bash命令,它将删除所有匹配特定模式的文件 – 在这种情况下,它是所有已经构build的vmware日志文件。 我试过这个命令: find . -name vmware-*.log | xargs rm 但是,当我运行该命令时,它会阻塞所有名称中都有空格的文件夹。 有没有办法格式化文件path,以便xargs将其传递给rm引用或正确转义?

awk可以用来代替吗?

我想从这里得到rating的数字作为输出 # nc localhost 9571 language: language:en_ZA.UTF-8 language:en_ZW.UTF-8 session-with-name:Ubuntu Classic (No effects):gnome-session –session=2d-gnome session-with-name:Ubuntu (Safe Mode):gnome-session -f –session=2d-gnome session-with-name:Ubuntu Classic:gnome-session –session=classic-gnome xsession:/etc/X11/Xsession rating:94 我可以这样做 # nc localhost 9571 | grep rating | cut -d: -f2 94 但可以用awk来代替更简单的解决scheme?

后台进程在注销时是否获得SIGHUP?

这是这个问题的后续。 我已经运行了更多的testing; 看起来如果在物理控制台或通过SSH完成的话,这并不重要,这也不会发生在SCP中; 我也用cat /dev/zero > /dev/nulltesting它。 行为是完全一样的: 使用& (或者在使用CTRL-Z和bg开始后,把它放在后台)在后台启动一个进程; 这是不使用nohup完成的。 注销。 再次login。 这个过程仍然在那里,愉快地运行,现在是init的直接子init 。 如果发送SIGHUP ,我可以确认SCP和CAT都立即退出; 我用kill -HUPtesting了这个。 所以,看起来SIGHUP在注销时不会发送 ,至less是后台进程(由于显而易见的原因,不能用前台进行testing)。 最初发生在我使用VMware ESX 3.5服务控制台(基于RedHat)的情况下,但是我能够在CentOS 5.4上完全复制它。 问题是,SIGHUP不应该在注销时被发送到进程,即使它们在后台运行。 为什么这不会发生? 编辑 按照Kyle的回答,我用strace进行了检查。 正如我期待的那样,从启动的shell中注销时,进程没有任何信号。 这在使用服务器的控制台和通过SSH时都会发生。