Articles of bash

testinglogin是否是scp连接

我回应login各种机器的统计数据,但这对SCP和SFTP是有问题的,是否有一个我可以testing的shellvariables?

Bash:执行stdin的pipe道

经过一番search,我还没find解决办法。 我认为search条件太笼统了。 我想知道如何执行一些行(在bash提示符),这是由其他来源生成的。 例如,我有一个Python脚本,它dynamic生成一些bash命令并将它们print到stdout。 我想这些行作为bash脚本执行,而不必将其保存到磁盘。 例如: $ python example.py touch 1 2 3 4 5 rm 1 2 3 4 5 echo "Done" 我想要做一些事情: $ python example.py | executeLines 这样的命令/function是否存在于bash中? 有时候,其中一个命令可能会以非零退出状态退出,因此在每个命令后附加&& ,然后运行: $ `python example.py` 将不会总是工作,似乎是一个笨拙的解决scheme。

我可以使用什么命令来searchsendmail日志,以查找涉及特定收件人的所有邮件详细信息。

CENTOS 5.x | 发送邮件 偶尔我需要通过sendmail传送日志来查找丢失消息发生了什么。 这通常涉及两个(或更多)步骤: 第1步:search/ var / log / maillog获取用户的电子邮件地址。 例如grep -i“[email protected]”/ var / log / maillog 通常返回这样的东西: Jan 11 07:43:34 server-example sendmail[12732]: p937blksdh3: to=<[email protected]>, delay=00:00:00, xdelay=00:00:00, mailer=esmtp, pri=102537, relay=mta.recipientdomain.com. [12.34.56.78], dsn=5.7.1, stat=Service unavailable 第二步:我将抓住唯一的消息名称(在这种情况下是p937blksdh3)并search。 例如: grep -i p937blksdh3 / var / log / maillog 我想将第1步和第2步合并为一行,并自动执行与其他ID相同的search。 所以在一个命令中,我想要执行以下操作: search特定string的sendmail maillog。 确定电子邮件的消息ID(在上面的例子中,这是p937blksdh3)。 (我猜awk'{print $}'会被使用?) search相同的日志,但search消息ID,而不是(在上面的例子中,基本上是grep […]

我可以更改特定用户的所有文件的所有权吗?

有没有办法recursion查找用户拥有的所有文件,并将其更改为Gnu / Linux中的另一个用户/组? 我认为必须有一些魔术一class,但我的命令行魔术技能不达标:) 谢谢!

使用ssh在远程服务器上运行本地脚本,而不必担心引号

所以我一直在远程服务器上运行本地脚本: ssh user@server "`cat local-script.sh`" 但是,今天我有一个既有单引号又有双引号的脚本。 这导致脚本失败,因为cat local-script.sh的输出用引号括起来。 无需修改脚本本身,是否有更好的方法来处理? 我认为这可能工作: ssh user@server $(<local-script.sh) 但似乎并没有做任何事情…

如何从init.d脚本检测挂载点是否存在?

重新启动后,我使用init.d脚本从挂载的networking共享(autofs)执行应用程序。 该脚本在尝试执行命令之前等待30秒,以等待networking/挂载点处于启动状态。 在执行命令之前,我想以某种方式检测networking是否已经完全挂起,挂载是否已经确定挂载。 你有什么build议如何用这个脚本实现这个(在CentOS 6.4中)? 这是我现在所拥有的: #!/bin/bash # # chkconfig: 3 95 5 # description: My app # processname: my-app # # Sleep for 30 seconds before attempting to execute command sleep 30s # Get function from functions library . /etc/init.d/functions # Start the service my-app from autofs mount start() { echo -n "Starting my-app: […]

防止sudo,apt-get等将粘贴的input内容吞到STDIN?

我经常写一些wiki说明在Ubuntu上安装各种服务器软件包(11.10 Oneiric)。 他们总是涉及的东西如: sudo apt-get install -y postfix sudo cp ~/siteconfig/etc/postfix/main.cf /etc/postfix 但是当你剪切并粘贴到terminal时,sudo,apt-get或者某个子shell会随机吞下随后的input行,只有apt-get install发生。 有没有办法让这个更贴切友好? 我想我可以用每个部分来包装 cat > script <<EOF apt-get install -y postfix cp ~/siteconfig/etc/postfix/main.cf /etc/postfix EOF sudo sh ./script 但有没有更好的办法?

如何通过手动故障转移处理IP?

我有两个相同的存储主机,其中主人是唯一的用户可以访问。 如果主服务器出现故障,那么我想手动更改DHCP地址,因此,而不是master站点到10.10.10.10它应该指向10.10.10.11 。 有复制脚本依赖于IP地址,所以如果主站更改IP地址,则必须修改脚本中的IP,这样数据仍然会从主站复制到从站。 题 切换IP地址和编辑脚本是一个相当容易出错的任务。 这种手动故障转移是如何进行的? 例如通过添加某种抽象层?

为所有用户更改Linux命令提示符的最有效方法?

我有几台机器和主机名是真的很长..即companyname-ux-staging-web1.companyname.com。 所以我的提示看起来像 [root@mycompany-ux-staging-web1 ~]# 我想尽可能缩短所有机器上所有用户的工作量。 从我读到的我有几个select,但他们都有他们的缺点。 我可以更改主机名,但这可能会影响应用程序。 不是一个很好的select。 我可以通过编辑现有用户的所有.bashrc,并为潜在的新用户编辑/etc/skel/.bashrc,在login时为所有用户更改$ PS1。 在10台以上的机器上,这是很多的工作。 我最好的select是什么,或者我忽略了什么?

bash脚本提示错误

我有一个脚本可以做。 ls,cp,mv我希望如果任何命令失败,应该通过电子邮件以及成功竞争后提醒。 任何想法? 我可以调整电子邮件警报,但想知道如何检查错误和成功的尝试。