Articles of bash

如何从Active Directory服务器下载化身图像?

我正在使用与Oracle客户端一起安装的ldapsearch.exe二进制文件。 花了一段时间梳理出它想要的参数,但是我能够成功地连接到AD并parsing出文本属性(给出用户名,查找电子邮件等)。 但我也想抓住Exchange / Lync使用的头像图片。 根据我挖掘的一些微软文档,属性名称是thumbnailPhoto 。 起初我无法弄清楚,但是这个命令不会产生生气的错误信息: ldapsearch -v -h xxx.yyy.edu -Z -b cn=USERNAME,ou=Computers,ou=yyy,dc=yyy,dc=edu cn=USERNAME thumbnailPhoto 当我运行时,我得到以下输出: ldap_open( xxx.yyy.edu, 389 ) filter pattern: cn=USERNAME returning: thumbnailPhoto filter is (cn=USERNAME) CN=USERNAME,OU=Computers,OU=yyy,DC=yyy,DC=edu 1 matches 当前目录中没有文件,%TEMP%中没有文件。 如果我使用-t带或不带参数,则不会下载文件。 没有二进制垃圾填充控制台窗口。 无论是否从bash(msy​​s)或cmd.exe运行命令,我都会得到相同的行为。 是什么赋予了? 看起来我一切正常。 但是我没有办法debugging。 我甚至没有使用正确的工具?

如何保护shell脚本免于失控?

我最近有一个编写shell脚本的经验,它通过消耗所有的资源来崩溃一个服务器(并损坏了一个分区)。 它被连接到一个cron的工作,似乎花费更长的时间比处决之间的时间间隔,随着时间的雪球失控。 现在,我已经修改它来logging它的运行状态,而不是同时运行多次。 我的问题是:还有其他简单的方法来保护脚本不致造成伤害吗? 是否有一个标准的脚本应该做的事情应该做的正确的行为,没有消耗太多的资源,优雅地失败,提醒正确的人等? 基本上:我应该避免哪些其他陷阱?

是否有可能从Linux更改BIOS设置?

我试图编写一个脚本来启用大量机器上的IPMI,而不必一个接一个地连接KVM。 有没有可能从Linux更改BIOS设置? 操作系统是SL6。 我明白,每台机器都可能需要重新启动,但我可以通过编程的方式来完成。

Ubuntu dpkg,非交互式安装

我试图安装一堆.deb文件,而不必与他们进行交互。 例如MySQL服务器会提示input交互式菜单,在dpkg的configuration中inputpipe理密码。 我努力了。 export DEBIAN_FRONTEND=noninteractive && export DEBIAN_PRIORITY=critical && sudo /usr/bin/dpkg -i ./files/* 我知道,我可以提取没有configuration的文件。 我正在尝试创build一个bash脚本来部署预先configuration了Apache,php,mySQL等默认安装的服务器。但是,这种“交互式安装”正在引发问题。 任何想法如何禁用它? 或工作? 谢谢

Bash自定义提示符打破长命令行的包装

我有一个自定义的bash提示,为我的用户名,主机名和当前工作目录着色。 颜色显示正确,但是当我input一个需要换行的命令行时,terminal不会启动一个新行,并在我的命令的开头写入。 这发生在RHEL 4和Debian上。 这个问题在OS X上详述了类似的问题; 这似乎是一个问题,不正确地终止控制序列,但我不明白是什么原因造成这一点,因为我使用$(tput)代码无处不在,而不是手工编写我的代码。 下面的代码片段 – 是否有人能够build议我做错了什么? # Control codes COL_RST=$(tput sgr0) # Remove all colour formatting COL_BRIGHT=$(tput bold) # Emphasise # Foreground COL_G=$(tput setaf 2) # Green COL_Y=$(tput setaf 3) # Yello COL_B=$(tput setaf 4) # Blue COL_USR=${COL_Y}${COL_BRIGHT} COL_PWD=${COL_B}${COL_BRIGHT} COL_HST=${COL_G}${COL_BRIGHT} # Set prompt PROMPT="${COL_USR}\u${COL_RST}@${COL_HST}\h${COL_RST}:${COL_PWD}\W${COL_RST}" # Put it all together…. PS1="[$PROMPT]\$ " […]

复杂进程名称的pgrep / pidof用法?

我正在尝试使用pidof或pgrep来发送HUP到我的系统中的进程。 问题是我只想用一个精确的参数杀死进程。 这是'ps awx'的输出 657 ? S 0:00 processname software 658 ? S 0:00 processname demo 659 ? S 0:00 processname test 通过做这些之一: pidof processname pgrep processname 你可以得到所有processname开始的列表,但是我想要做一些事情: pidof processname test pgrep processname test 只检索我需要的PID(在这个例子中是659) UPDATE 通过在pgrep上使用-f标志只是做我想要的,通过做: pgrep -f "processname test" 你会得到正确的答案。

更less像“更新文件”一样的function

我想观看一个文件,每5分钟用less写一遍。 我怎样才能less跟随新的文件描述符,而不是保持旧的显示? watch "cat file"不会这样做,因为该文件太长,不适合一个terminal窗口。

为普通用户(非root用户)提供初始化和closures自动运行function

我正在运行一个运行Debian Wheezy 7.4.0发行版的实验/testingLinux机器。 不同的用户通过sshlogin到他们的帐户,并允许运行开发工具,如果他们愿意,他们的程序作为服务在后台运行。 由于这是一个用于各种用途的testing机器,通常需要重新启动整个机器,然后用户必须重新login并重新启动正在运行的用户空间。 我想自动化。 基本上我想提供给用户一个意思是在机器启动之后(在所有其他部分被初始化之后)启动东西,并且意味着在系统closures时启动东西(没有时间限制,基本上停止closures直到所有这些closures用户进程已经完成)。 我到目前为止所尝试的: 我已经创build了一个init bash脚本,通过在/etc/init.d/(骨架模板源代码: https : //gist.github.com/ivankovacevic/9917139 )下的“骨架”模板文件中find的原则, 我的代码在这里: https : //github.com/ivankovacevic/userspaceServices 基本上,脚本会遍历用户主目录,并在名为.startUp,.shutDown或.status的相应子目录中查找可执行文件。 根据当前正在执行的事件,脚本以su执行,就像用户自己启动它们一样。 我目前使用这种方法面临的问题是,在系统引导之后还有一个奇怪的进程挂起,脚本启动了其他用户的所有进程。 这是它在进程列表中的外观: UID PID PPID C SZ RSS PSR STIME TTY TIME CMD root 3053 1 0 1024 620 1 17:42 ? 00:00:00 startpar -f — userspaceServices 我不知道这个过程是什么,手册页没有提到-f参数。 所以我很笨,但是我必须做一些错误的事情,因为从init.d中没有其他的脚本/服务在启动之后会挂起这样的进程。 所以我正在找人帮我debugging我的解决scheme(这在我看来也有点复杂)。 或者给我一些想法,这可以以完全不同的方式来实现。 UPDATE 我已经为startpar问题启动了一个单独的问题: 从rc.local或init.d启动进程时startpar进程挂起 更新2 […]

回答“是”ssh-copy-id首次运行脚本?

第一次ssh-copy-id它会问 # ssh-copy-id -i .ssh/id_dsa.pub [email protected] The authenticity of host 'example.com (xxx.xxx.xxx.xxx)' can't be established. RSA key fingerprint is 39:fb:5e:70:30:33:2b:18:17:e9:4f:2f:91:b5:d2:21. Are you sure you want to continue connecting (yes/no)? 是否可以编写脚本,所以脚本会回答是的?

Bash脚本参数

我需要写一个bash脚本 ,并希望它分析格式的无序参数 : scriptname –param1 <string> –param2 <string> –param3 <date> 有一个简单的方法来完成这个,或者我几乎坚持1美元,2美元,3美元? 编辑 (注意 – 我不需要很长的参数名称 – 单个字母也可以)