Articles of shell scripting

LDAP帐户到期脚本帮助

我需要find一种自动通知LDAP帐户用户的方式,以便他们的密码何时到期,并强制他们更改密码。 我是相当新的LDAP。我在RHEL 5.3上运行openldap 2.3.43.el5我想find一个解决scheme(可能在脚本forms),但我打开其他久经考验的解决scheme。 我打算做的是从下面的命令parsing,过滤或格式化LDAP查询输出(示例) slapcat -b "cn=Manager,dc=berkerly dc=ac dc=uk" 这样我得到一个输出显示用户cn(名称)和LDAP数据库中的用户pwChangedTime字段为例 cn: jbloggs : pwdChangedTime: 2011078159Z 或者更好的仍然在同一行上 cn: jbloggs :pwdChangedTime: 2011078159Z 这样,我可以告诉用户密码上次更改时,然后基于我们的密码策略时,LDAP帐户的用户密码将过期。 实际上,这将使我能够很快从迷你报告中计算出密码到期的时间。 我希望在脚本中做到这一点,但不知道如何从slapcat命令输出实现这一点。 在LDAP中有一种方法或命令,列出一个用户cn(名称)和pwdChanged时间或其他字段。我是一个LDAP新手,我只熟悉slapcat命令列出所有LDAP用户及其各种属性字段我LDAP数据库。 这slapcat输出是不容易grep和awkfind我正在寻找什么。 此外,我需要确认字段pwdChangedTime:是否真正代表该用户的密码上次更改的date。 最后有没有办法像在普通的本地Unix,Linux帐户上那样强制用户更改他们的LDAP密码。 你的帮助将不胜感激。

shell脚本在crontab中,并不是所有的输出都被logging下来

我有一个简单的shell脚本,运行几个LFTP命令并处理这些文件。 当从bash直接运行时,我在屏幕上获得了LFTP命令的完整输出。 从以下的crontab运行时… */5 * * * * /bin/bash /home/user/ftp-getter.sh >> /var/log/ftp-getter.log 2>&1 我只得到我正在显式地回显一些输出和date命令的输出的行的输出。 LFTP返回的文本不会进入日志。 我已经试过把2>&1移到>>之前,仍然得到相同的结果。 当直接从命令行运行该crontab命令时,我在屏幕上和日志文件中都获得了LFTP输出。 但是不能在crontab中运行。 有没有什么特别的LFTP输出会导致这种情况,并可能适用于其他命令从crontab中的shell脚本运行?

从Linux客户端自动configurationWindows服务器。

我们公司构build了一个基于服务器的C ++应用程序,可以通过Windows安装程序进行安装。 我希望能够远程login到一个全新的Windows服务器,并安装该C ++应用程序以及一个testing套件,并从Linux工作站执行。 我想用自己的Linux工作站运行一个Bash脚本来自动执行这个过程。 使用Linux服务器,这非常简单。 首先运行sshd的基本configuration,使用scp将服务器端bash脚本从Linux客户端移动到服务器,然后从Linux客户端ssh进入Linux服务器并运行bash脚本。 但是,如果客户端是Linux,但是服务器是Windows Server(例如2k8r2),我该怎么做呢? 我正在考虑使用Chef Solo做一些这方面的工作,但是我仍然需要安装Chef Solo。 我将如何从Linux Workstation远程执行此操作。

如何find本地Linux工作站的IP地址

我正在创build一个shell脚本,它应该执行一些本地设置,并在文本文件中回显机器的IP。 我需要这样做的原因是获取在一个PHP脚本的IP,并从那里作为一个网站的根使用它。 我可以使用ifconfig来获得IP,但是我需要去除无用的信息。 我想在shell脚本中做这个,而不是在PHP文件中。 操作系统是CentOS 5.5,我需要eth0的IP。

将服务器A上的Postgresconfiguration为pg_restore到服务器B(需要证书身份validation)

我正在尝试configuration在SERVER_A上运行的PostgreSQL实例,以连接到SERVER_B上的另一个PostgreSQL实例。 我在SERVER_A上运行一个shell脚本,最终需要连接并执行一个pg_restore到驻留在SERVER_B上的数据库中。 SERVER_B在亚马逊的AWS上。 通常情况下,要进入机器,我会运行以下命令: # ssh -i .ssh/server-dev.pem [email protected] [root@dev]# ssh -i .ssh/dev1mac 0.0.0.0 …在Postgres实例驻留在0.0.0.0 任何人都可以帮我解释一下如何使用上面的信息在SERVER_A上configurationPostgres? 我一直在寻找pg_hba.conf,但坦率地说,我从来没有这样做过,从文档,我不清楚如何实现我想要的结果。 有没有更简单的方法可以让我跳过configurationPostgres,而是从我的shell脚本运行一系列的命令来实现恢复? 我会感谢任何帮助,谢谢!

Bash:当用sudo运行的脚本调用php命令时找不到

我有这个奇怪的问题。 php命令没有在一个特定的坐标中find。 我尝试以三种不同的方式调用命令。 其中只有一个失败: 作为用户john我创build了一个简单的脚本调用php –version 。 然后以root用户的身份调用这个脚本: sudo -u john ./script.sh 这样php命令没有find。 作为root我像这样直接调用命令: sudo -u john php –version 这里没问题,命令确实存在。 我直接以用户'john': ./script.sh调用脚本 它也能正常工作。 这是什么原因造成的? 其他用户也会遇到这个问题,不仅仅是john ,它只发生在这个特定的机器上。 操作系统是CentOS 5.9。 编辑:另外,像gcc , perl或python其他命令不会出现这个问题。 php命令是我迄今发现的唯一一个问题。

当试图将文件从Linux复制到Windows时,scp卡住了

我使用下面的scp语法为了将文件从Linux红帽子5转移到Windows机器(在Temp目录下), 备注: SSH服务器已经安装在Windows机器上 我在我的shell脚本中使用这一行 sshpass -p '$password' /usr/bin/scp -o StrictHostKeyChecking=no $FILE [email protected]:'D:/Temp' 在大多数情况下文件传输成功 但有时scp卡在文件传输? ,尽pipe连接是可以的,如ping等 并从scp(经过很长时间)得到以下错误 ssh_exchange_identification: read: Connection reset by peer 为什么SCP不稳定和卡住? ,以及这个问题的解决scheme是什么? 什么别人好的替代scp? ,(考虑到我需要100%的稳定性)

运算符\>和\ <(string版本比较)无法在shell脚本中识别

我试图运行Casandra nodetool并从脚本得到警告。 [root@d11ca4cc-fa95-c8a9-e133-e64c434f0e6f ~]# nodetool status /opt/local/share/cassandra/bin/nodetool[53]: .[97]: [: <: unknown operator /opt/local/share/cassandra/bin/nodetool[53]: .[102]: [: <: unknown operator prtconf: devinfo facility not available /opt/local/share/cassandra/bin/nodetool[53]: .[222]: [: <: unknown operator 在第53行nodetool正在调用cassandra-env.sh。 在cassandra-env.sh(第97,102,222行)中: … 97 if [ "$JVM_VERSION" \< "1.7" ] ; then … if [ "$JVM_VERSION" \< "1.8" ] && [ "$JVM_PATCH_VERSION" -lt "25" ] ; […]

Nagios:bash缺失

我正在用nagios和nrpe在nagios服务器上监视NTP服务器,当我得到以下错误:服务状态UNKNOWN状态信息我缺less一个重要的组件:bash 该插件是: http : //archive.groundworkopensource.com/groundwork-opensource/trunk/monitor-core/nagios/plugins-contrib/check_procr.sh 当我做bash -x check_procr.sh时的输出是: + myself=check_procr + verify_dep + needed='bash cut egrep expr grep let ps sed sort tail test tr wc' ++ echo bash cut egrep expr grep let ps sed sort tail test tr wc + for i in '`echo $needed`' + type bash /dev/null + '[' 1 -eq […]

在shell脚本中的iptables块之间添加睡眠/延迟

在一台服务器上,我们试图阻止中国的访问。 我们希望用iptables而不是通过.htaccess来实现。 但是,我们遇到的问题是,当一次添加多个iptables(我们在这里讨论1000多个ip中国子网)时,会出现一个错误(错误“iptables:Unknown error 18446744073709551615”,然后所有其他的会失败),这意味着我们必须iptables -F为了继续添加这些规则。 一些testing的结论是,这个问题似乎是当试图一次运行很多(甚至一次10多个似乎抛出错误),而不是服务器只是不喜欢一些特定的规则。 所以我想知道,如果试图在每个iptables规则运行之间添加一个睡眠(或其他一些延迟),可能会改善这个过程? 我们已经尝试过多种实现这些iptables的方法,但是如果可能的话,我们希望使用下面的nixCraft中的脚本 。 #!/bin/bash ### Block all traffic from AFGHANISTAN (af) and CHINA (CN). Use ISO code ### ISO="af cn" ### Set PATH ### IPT=/sbin/iptables WGET=/usr/bin/wget EGREP=/bin/egrep ### No editing below ### SPAMLIST="countrydrop" ZONEROOT="/root/iptables" DLROOT="http://www.ipdeny.com/ipblocks/data/countries" cleanOldRules(){ $IPT -F $IPT -X $IPT -t nat -F $IPT -t nat -X […]