Articles of shell scripting

在一台机器上使用shell脚本在多台linux机器上安装一个软件

我将使用ssh-puttylogin到一个Linux实例,我的目标是在5台Linux机器上安装一个软件(例如:我需要下载oracle并安装它),当我在一台机器上运行该脚本软件时安装在所有机器上

shell脚本+从日志文件中匹配MAJOR和CRITICALstring

我需要匹配具有MAJOR和CRITICALstring的行 在ERROR:<any integer number>之后 请build议如何使用awk或sed命令做到这一点? more HW_Log.txt CHK_HW ERROR:0 INFO self_monitor Verifying HW machine CHK_HW ERROR:1 MAJOR self_monitor Verifying HW machine CHK_HW ERROR:1 CRITICAL self_monitor Verifying HW machine

如何join可变数量的行

我有一个文件的function名称和可变数目的用户名如下: 优点1 USER1 用户2 特点2 用户3 我想能够将用户名移动到function名称相同的行(沿vijoin命令行)。 function名称以大写字母开头,用户名以小写字母开头。 有没有办法做到这一点?

grep +正则expression式来匹配uniq号码

我的目标是validation$ FILE是否是一个备份文件(备份文件以xxxx.xx.xx.xx数字结尾 备份文件的例子 ls /etc/VRTSvcs/conf/config main.cf.17Dec2012.09.10.14 main.cf.17Dec2012.09.10.23 main.cf.17Dec2012.09.10.31 没有备份文件的例子 main.cf 我写下面的ksh脚本行来validation$ FILE是否以xxxx.xx.xx.xx数字结尾 。 [[ ` echo $FILE | grep -v '[0-9]\{4\}\.[0-9]\{2\}\.[0-9]\{2\}\.[0-9]\{2\}' ` -eq 0 ]] && echo Not Backup file 我设定了 FILE="main.cf.17Dec2012.09.10.31" 我在Solaris / Linux上运行这一行,但是我得到了“不备份文件”,尽pipe$ FILE以2012.09.10.31结束 请build议什么问题与我的ksh行(需要修复)以匹配数字 – xxxx.xx.xx.xx

自动修复shell脚本或与^ M中断的文件的行结尾的方法

问题 我们经常打破我们的文件结尾,事情停止工作,没有我们注意到。 Bash抱怨“无效选项”或“:找不到命令”,如下所述: http : //thinkinginsoftware.blogspot.ca/2012/11/linux-server-cries-for-linux-desktop.html 我担心这可能会破坏其他文本文件(conf,crons …) 我们如何打破它(我想) 我们是一群使用Windows,Mac或Linux在一台服务器上编辑Linux文件的人。 我们手动编辑这些文件(ssh + vi / nano或者localy + ftp)。 有时我们复制/粘贴,我认为这是造成这个问题的原因。 是的,有时我们不会为了不太好的原因而testing我们的更改:相同的脚本在复制服务器上工作,更改只是缩进一些行等。 我同意这应该解决。 没有计划使用Chef / Puppet-like解决scheme。 更新 TLDR复制粘贴不是问题,FTP是。 我在Windows + Notepad ++ + PuTTY + nano和vi上做了一些复制/粘贴Windows行尾的CRLFtesting。 它看起来像CR(^ M)字符被过滤,只有LF被粘贴到文件。 感谢ewwhite让我怀疑复制/粘贴理论! 我使用FileZilla通过FTP传输了一个CRLF结尾的文件,选项“发送模式”为自动。 CRLF被保留。 我不知道FileZilla是否可以将它们转换为LF。 减轻 我们不能禁止非Linux操作系统,也不能禁止复制粘贴。 我想到了这些解决scheme: 构build一个运行dos2unix或sed所有脚本的cron.minutely。 缺点:我们需要维护一个“可修改的文本文件”列表,因为我不希望它在/ 使用文本编辑器,可以在文件更改后支持其他命令。 缺点:可能会破坏合法使用非Linux行结尾的文件,在我们ftp脚本时不起作用。 使用像http://inotify.aiken.cz/?section=incron&page=about&lang=en这样的触发系统。 缺点:? #2和#3的优点:我们也可以使用这些为需要它的程序添加最后的空白行。 使用bash,版本4.2.37(1) – 释放 相关的问题^ M(CRLF) 哇,这是不对的。 […]

如何在Exchange 2003中脚本创build现有邮箱的电子邮件别名?

我需要创build大量的电子邮件别名(比我想手动更多),所以我想知道是否有一种方法,我可以脚本添加别名到现有的邮箱/用户。 我不介意是否必须使用PowerShell或外部工具。 对于每个现有的用户,我需要创build一些新的电子邮件别名。 我有一个例子: [email protected] 然后我想创build: [email protected] [email protected] [email protected] [email protected] [email protected] … 谢谢

如何从Debian上的shell脚本启动Rails?

目前我真的没有必要惹上乘客或卡皮斯特拉诺。 我只是想在端口3000启动时运行rails。我试图复制节点的这个教程,尽可能多地运行rails: 我在/etc/init.d/中有一个railsup脚本,如下所示: #!/bin/sh export PATH=$PATH:/usr/local/bin case "$1" in start) cd /root/rails_app; /usr/local/rvm/gems/ruby-2.0.0-p247/bin/rails server -d -p 3005 ;; # starting other stuff *) 我也把它包含在update-rc.d 我得到它的工作,但只有我手动运行脚本 – 它似乎并没有启动时运行。 ../bin/rails在启动时是不可用的吗? 我想有一些关于ruby path \ rvm \ rails的东西,我不知道? 有没有办法使用crontab的@reboot呢?

Linux:通过运行yppasswd,更新passwd.byuid会导致随机失败的原因是什么?

为了允许我公司的NOC用户通过NISpipe理用户,我创build了以下脚本: #!/bin/bash # This script will simplicate NIS user management. # You will not be able to change password or delete users peeradmin and root through this script. # Written by Itai Ganot 2014. # Edit only this variable: PROTECTEDUSERS="peeradmin root" # Separate values with spaces. # Variables USER=$1 GREP="/bin/grep" PASSWDFILE="/etc/passwd" YPPASSWD="/usr/bin/yppasswd" USERDEL="/usr/sbin/userdel" USERADD="/usr/sbin/useradd" PASSWD="/usr/bin/passwd" […]

Gitlab自定义钩子问题

我正在实现一个自定义的gitlab钩子。 当有人推入主人,我想更新一个特定的文件。 然后提交此更改并将其推送到远程原点。 钩子如下所示: clone_repo(){ //cloning a specifc branch on my_app dir export GIT_WORK_TREE="path/my_app" } cd_app(){ cd my_app } update_file(){ // updating random.java } commit_file(){ git commit -m "commit from hook" random.java } while read oldrev newrev refname do if [ ${refname} = "refs/heads/master" ] then clone_repo cd_app && update_file commit_file && push_it exit 0 […]

获取文件的ctime,atime,mtime和扩展属性

我想显示一个文件的ctime,mtime和atime,以及它是否具有扩展属性。 有2个命令可以做到这一点,但我没有能够把它们合并成一个单一的命令来给出一行输出。 find /tmp -maxdepth 1 -printf "%a _ %c _ %t _ %P\n" 给出类似于这样的输出: Thu Aug 27 09:51:11 2015 _ Thu Aug 27 09:48:40 2015 _ Thu Aug 27 09:48:40 2015 _ tempfile.tmp 和 ls -l /tmp 给出类似于这样的输出: -rw-rw—-+ 1 root root 5 Aug 27 04:39 tempfile.tmp 我只对ls输出中的权限之后的“+”符号感兴趣。 理想情况下,我希望输出与此类似: + Thu Aug 27 09:51:11 […]