Articles of bash

在terminalinput干扰`nc`在后台运行?

我可以运行这两个命令: nc -l localhost 8888 -v >> output.txt & (while true;do sleep 1;echo a;done)|nc localhost 8888 & 所有的预期与output.txt填充“a”(从不同的terminal尾)。 但是,如果在运行后台作业的terminal中键入单个字符,发送nc将从Running转为Stopped : $ jobs [1]+ Stopped nc -l localhost 8888 -v >> output.txt [2]- Running ( while true; do sleep 1; echo a; done ) | nc localhost 8888 & 还要注意,它丢失了“背景”符号。 不知道从哪里开始debugging这个。 这是预期的行为? 谢谢。 Mac OSX 10.9,GNU […]

在启动时在EC2上安装灯泡服务器

我将一些脚本传递给EC2 userdata以在starup上安装。 其中之一是sudo tasksel install lamp-server 当这个进程运行时,它提示inputmysql密码两次,绕过这个,我用 sudo debconf-set-selections <<< "mysql-server mysql-server/root_password password pass" sudo debconf-set-selections <<< "mysql-server mysql-server/root_password_again password pass" sudo tasksel install lamp-server 脚本运行正常,当我ssh进入实例并手动运行它。 但是,当我把这个到EC2的用户数据,这个错误发生can't open /dev/tty: No such device or address 那么有没有解决办法?

RBASH如何防止用户退出正常bash?

我已经设置了一些testing帐户来testingrbash,以限制用户在服务器上执行的操作。 目前我正在使用.bash_profile为这些configuration文件设置bash -r 。 但是当用户键入exit它们会进入正常的bash shell。 我想这样做,当他们键入exit注销服务器。 否则bash -r将不会限制访问。 请让我知道你有什么想法。

如何在所有远程服务器上并行执行带有args的bash脚本(如果从远程服务器中的远程服务器)

请仔细阅读问题,然后给予解决scheme ……………. 我们在目录中有3个文件 myscript.sh(myscript.sh文件包含许多函数,并从serverlist.txt文件启动/停止所有对/单对,函数如 对于start()函数:检查arg2是全对还是单IP对,然后启动它。 对于stop()函数:它检查arg2是全对还是单IP对然后停止它。 对于rules()函数:它检查arg3是否是new-rules或者same-rules然后拷贝它 对于put_files()函数:它与arg2一起使用,并检查arg2是全对还是单IP对 like: ./myscript.sh put_files all-pair or ./myscript.sh put_files 192.168.20.13-192.168.20.21 2. deployment_function文件:deploymet_function文件以pair的forms从server_list.txt文件中获取IP-Pair。 server_list.txt server_list.txt的conatin会以IP-Pair(C ++ Server-数据库服务器)的forms主机IP。 192.168.20.13-192.168.20.21 192.168.20.22-192.168.20.34 192.168.20.42-192.168.20.45 我的脚本的基本语法: ./myscript.sh arg1 arg2 arg3 其中,arg1 =开始或停止或放置文件 arg2 =全双或单个ip对 arg3 =新规则或相同的规则 我们正在执行我们的脚本在以下几个方面….. ./myscript.sh启动所有对新规则 ./myscript.sh start 192.168.20.13-192.168.20.21新规则 ./myscript.sh停止所有对或 ./myscript.sh stop 192.168.20.13-192.168.20.21 问题:实际上,它的执行很好,但是由于它是连续执行的,所以在所有IP对上执行需要更多的时间。 首先是192.168.20.21,然后是192.168.20.13,然后是192.168.20.34和192.168.20.22 …..当它遇到错误时,在该服务器上停止。 而不是在其余的IP对上执行。 我想在所有的服务器上并行执行myscript,如果出现错误,然后列出该服务器并执行furtur。 所以有没有任何解决scheme,我可以并行执行相同的脚本,而不用改变myscript。 所以请帮我找出正确的方法来做到这一点….

IPMItool,bash脚本

我需要写一个bash脚本,将在服务器去检查ipmi的ip地址, 正如我读到的,我可以使用 ipmitool lan print 我可以写在服务器内显示IP地址。 但我需要在我的本地主机上执行这个命令,我试图执行这个命令: ipmitool lan print -H *servername* -U admin -P password 但我发现这个错误 无法build立LAN会话 我的命令有什么问题? 注意:我可以使用ssh访问服务器而不会出现问题,但是ipmitool不能在同一个命令行中使用ssh

用特殊字符的SSH远程执行命令

我试图从我的shell运行这个: 我有一堆机器,所以我有这个在我的.bash_profile function sssh() { ssh -i ~/.ssh/supersecret.pem $@ } 这是命令: export BOX=mybox.a.domain.com sssh www-data@$BOX "tail -n 1 /path/to/logs/some.log | awk -F '\t' '{print $1}'" 日志文件由制表符分隔。 因此awk上的-F '\t' – 这正是问题所在。 它逃脱了,没有向我展示我想要的列。 当我运行tail -n 1 /path/to/logs/some.log | awk -F '\t' '{print $1}' tail -n 1 /path/to/logs/some.log | awk -F '\t' '{print $1}'在盒子上按预期工作。 我怎样才能解决这个问题?

在bash脚本中recursion地打印一个儿童的完整树

因为在这里我不熟悉问题惯例。 我想写一个脚本,recursion地打印给定的pid,完整的儿童树。 我到目前为止: ps h -ef | awk '$3='$input_pid' {print $2}' | sort -n 但这仅仅是打印给定的PID(分类)的直接子节点。 问题是:如何为给定的pid的每个子pid召唤recursion函数? 谢谢…

期望脚本速度太快:在从文件读取的每行之间添加睡眠

我正在尝试自动切换命令。 它几乎都是好的,但是当期望脚本从包含我的开关命令的文件(逐行列出)读取每行时,开关似乎在大约10或15个命令后停止,我认为缓冲区太小。 如何在从文件读取的每个命​​令之间添加睡眠? 谢谢!! set fp [open "/home/room.txt" r] set data [read $fp] set timeout -60 spawn telnet 10.91.60.14 match_max 100000 sleep 2 expect * send — "^Y" sleep 2 send — "password\r" sleep 2 send — "^[\[A" send — "^[\[A" send — "\r" sleep 1 send — "enable\r" send — "configure terminal\r" sleep 1 […]

如何将lsof stat和ps结合起来,在一行bash命令中获得更多的信息

我可以使用lsof来获取顶级打开文件统计进程,如下所示: $ lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr | head -n 5 17955 11945 10282 2786 5980 32152 1920 27803 1786 32107 现在我想用一行bash命令来扩展结果如下, $ lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr | head -n 5 … 17955 11945 java 10282 2786 python 5980 32152 ruby 1920 27803 go 1786 32107 rust 我怎样才能做到这一点?

使用多个脚本logging所有bash操作

使用下面的命令,我可以logging脚本中发生的所有操作。 bash -x script.sh 不幸的是,脚本调用另一个脚本,它没有活动的-x设置,即该设置不被子脚本inheritance。 那么,有没有办法为所有后续脚本激活set -x ?