Articles of shell

Snmpwalk Linux Bash不返回数组

我运行一个nagios服务器上的opensuse linux通过snmp连接到esx 3.5服务器 我试图让snmpwalk返回一个数组,但它只返回一个值。 在esx盒子上,我用下面的shell来查找所有快照的大小 – /usr/bin/find /vmfs/volumes/ -name '*delta*.vmdk' -printf %f' '%s'\n' 这在esx框上运行时返回以下内容 – [root@localhost root]# /bin/sh /etc/snmp/snmp_snapshots.sh testnag01-000001-delta.vmdk 16840704 testnag01-000002-delta.vmdk 167835648 testnag01-000003-delta.vmdk 151058432 在nagios盒子上,我有以下shell – declare -a RESULT=$(/usr/bin/snmpwalk -v 2c -c public 10.10.0.20 .1.3.6.1.4.1.6876.57.101.2 | grep vmdk | awk {' print $4,$5 '} | sed 's/ /_size:/g' | sed 's/\"//g') echo "snapshot 1" […]

如何总结与Bashdate

我需要以15分钟的时间间隔loggingdate和时间。 结果应该是这样的: 1376708400|2013-08-17 00:00:00 1376709300|2013-08-17 00:15:00 1376710200|2013-08-17 00:30:00 1376711100|2013-08-17 00:45:00 1376712000|2013-08-17 01:00:00 1376712900|2013-08-17 01:15:00 1376713800|2013-08-17 01:30:00 1376714700|2013-08-17 01:45:00 1376715600|2013-08-17 02:00:00 1376716500|2013-08-17 02:15:00 1376717400|2013-08-17 02:30:00 …等等…总共我应该有96行。 我现在最大的疑问是如何在15分钟内增加(或总计)分钟数,我试过了(原谅我的混乱,我还在学习): i=96 _incrementatime='+15 minutos' count=1 _Date=$(`date "2013-08-29 00:00:00"`) _dataEmSeg = `date -d "2013-08-29 00:00:00" +%s` while test $i -ne 0 do _VarData=$(`date –date="$_incrementatime*count"`) _exprt=$(expr `$_Date+$_VarData`) echo "$_dataEmSeg e $_exprt " […]

从一个.sh脚本运行多个.sh脚本? CentOS的

我如何从一个.sh脚本运行多个.sh脚本,并将它们全部在不同的terminal中运行? 我已经有了 /root/A.sh&/root/B.sh&/root/C.sh 问题是它同时在同一个terminal上运行所有这些,如果没有,它会在前一个运行完成时运行它们,我怎样才能使它们在同一个terminal上同时启动?

新的命令行工具:唯一的名称

我想写一个新的命令行工具。 名字应该简短,不应该与现有的名字冲突。 如何知道其他命令行工具没有这个名字? 只是检查我的系统不是一个解决scheme。 该名称应该是唯一的: Ubuntu的 Debian的 红帽 SUSE

shell脚本将文件复制到terminal上显示的位置后生成

我写了一个自动化的shell脚本。 我想知道如何获取terminal上显示的位置variables,并使用包含该位置的variables将该位置中的特定文件复制到另一个位置。 更具体地说:我已经运行了一个命令,说“build立”文件名。 文件成功编译后,会显示文件在terminal上的存储位置。 我想从屏幕上显示的位置复制文件到另一个位置。 提前致谢 !:)

将SSL证书和中间件从给定的https URL导出到文件

我怎样才能从一个给定的url抓取根SSL证书和任何中介文件? 理想情况下,通过一些Linux shell兼容的命令行, 但手动将如果我必须做。 更新:使用Chrome以交互方式,如果我检查证书,我可以select导出它。 如果适用的话,有一种方法可以抓住整个链条。 所以现在我只是在寻找一个脚本化的方法。 背景: mono nuget.exe install ./packages.config -o ./packages 将在ubuntu上安装项目包,只要所需的证书安装在机器的Trust存储中 。 部分是这样做的: $ certmgr -ssl https://nugetgallery.blob.core.windows.net 此命令与-ssl选项一起从指定的URL获取证书和任何中间体,并要求用户确认。 我正在尝试自动化服务器版本,所以我希望在不需要用户确认的情况下添加证书。 我已经尝试将响应input命令 – 即: $ echo "Yes" | certmgr -ssl https://nugetgallery.blob.core.windows.net 这是行不通的。 我试图导出certficates到一个文件,所以我可以将它们添加到我的生成项目,但单声道certmgr还没有实现“放”。

不要vim“fork”一个shell来执行命令

我正在阅读有关进程组的APUE 。 这本书说, 在大多数作业控制shell中,在fork之后调用此函数( setpgid )以使subprocess设置自己的进程组ID。 其中一个要求是多余的,但是通过这两个过程,我们保证在任何一个过程假定发生这种情况之前,把这个孩子放到它自己的过程组中。 我写了下面这段代码来validation我的理解。 error handling被省略。 #include <unistd.h> #include <stdio.h> #include <stdlib.h> int main(void) { printf("process ID: %d\n", getpid()); printf("process group ID: %d\n", getpgrp()); exit(0); } 输出(直接运行到一个shell): 进程ID:4388 进程组ID:4388 输出(在vim中运行): process ID: 4401 process group ID: 4400 // pid of vim (through ps) 为什么结果不一样? 不要vim fork一个shell来执行命令? 如果是这样,有什么区别或换句话说,为什么进程组ID不像第一个输出那样等于进程ID? 顺便说一下, fork是否总是自动设置subprocess的进程组ID? 我试图在设置它之前打印一个subprocess的进程组ID,并打印了父进程的进程ID。 非常感谢。

bash脚本在多个服务器上执行命令

我想要一个脚本,将重新启动各自的服务器上定义的服务。 我想要传递参数如下脚本:例如: sh execute.sh Enter your server and service list: [server1:nginx,mysql],[server2:mysql,apache],[server3:mongodb,apache] 通过这个input,脚本应该在相应的服务器上validation并启动服务。 我可以通过声明variables在单个服务器上执行此操作。 #!/bin/bash Instance_Name=server1 Service_Name=(nginx php-fpm mysql) SSH_USER=admin SSH_IDENT_FILE=~/credentials/user.pem len=${#Service_Name[*]} i=0 while [ $i -lt $len ]; do service=${Service_Name[$i]} ssh -i $SSH_IDENT_FILE -o StrictHostKeyChecking=no $SSH_USER@$Instance_Name 'service $service restart' done 现在我没有想法前进。 请让我知道如果我的问题不清楚。 提前致谢。

语法错误:“(”unexpected(expect“fi”)

错误消息: Syntax error: "(" unexpected (expecting "fi") /sbin/modprobe.sh: 2: /sbin/modprobe.sh: EOF: not found /sbin/modprobe.sh: 10: /sbin/modprobe.sh: Syntax error: "(" unexpected (expecting "fi") Shell脚本: EOF #!/bin/bash if [[ \$1 == -l ]] then if [ -z \$2 ] then find /lib/modules/\$(uname -r) -name '*.ko' | sed -e "s#\\/lib\/modules\/\$(uname -r)\/##g" else find /lib/modules/\$(uname -r) -name '*.ko' | […]

使用bash而不是select语句

我想知道是否有可能使用bashpipe道,而不是在tab seperated value(tsv) – fileselect语句tab seperated value(tsv) – file 我的tsv文件具有以下结构: CREATE TABLE movies (title VARCHAR, full_name VARCHAR, type VARCHAR, ep_num VARCHAR, suspended BOOLEAN, year INT); 如果我想检索: How many movies were produced in 2013? 我会说在sql : SELECT COUNT(*) FROM movies WHERE year='2013'; 然而,我怎么会说,在pipe道打击(使用cat , grep或wc )? 这甚至有可能吗? 我真的很感谢你的回答!