Articles of bash

在bash脚本中,在脚本退出后的提示符上打印命令(作为build议)

我想编写一个shell脚本,可以通过在命令行提示符后面打印来build议一个命令。 然后,在脚本退出后,用户只需按[enter]键运行这个build议的命令。 鉴于我是新来的bash,我甚至不知道是否有可能做到这一点。 我想过使用copy-past命令,移动光标,使用$ PS1variables,没有find合适的方法。 有没有人有这样的function可以实施的任何线索?

哪里可以在linux中设置一个环境variables?

我已经安装Hortonworks ambari,现在我希望它完全从我的系统中删除。 我已经卸载并清理删除所有相关的文件夹。 但是我仍然可以看到环境variables仍然指向旧的(未知的)文件夹位置。 我想清理这些环境variables,但无法这样做。 我检查了〜/ .bashrc,/ etc / profile,/ etc / profile,/etc/bash.bashrc,/etc/profile.d/ *而没有运气。 任何其他可以设置环境variables的地方。 我知道我可以在我的个人资料中取消他们,但是我希望他们不要被设置。 编辑:我也检查/ etc /环境

如何在Linux中的多行查找和replace文本?

我正在阅读一个XML文件,并希望find此属性并将值50replace为45之前: <name>ipc.client.connect.max.retries</name> <value>50</value> 后: <name>ipc.client.connect.max.retries</name> <value>45</value> 我在用 pcregrep -M '<name>ipc.client.connect.max.retries</name>.*(\n|.)*<value>45</value>' core-site.xml findstring。 我试过了 sed 's/$string1/$string2' core-site.xml 它不工作

用另外的文本写一个Netcatstream文件

我试图写一个netcatstream到本地文件,但我也想用一些元数据(即连接的源IP)实时注释每个stream条目,因为我将使用多个stream将写入到相同的文件。 例如,以下(bash命令)工作正常: nc 192.168.0.1 443 >> result.txt & echo -n "| Source: 192.168.0.1 | " >> result.txt 上面的代码的问题是它只会第一次input元数据。 所以输出如下所示: Source: 192.168.0.1 | !* Connected! X Y Z 我希望书面结果如下所示: Source: 192.168.0.1 | !* Connected! Source: 192.168.0.1 | X Source: 192.168.0.1 | Y Source: 192.168.0.1 | Z Source: 192.168.0.2 | A #<–Written From different netcat stream 不幸的是我不能运行一个脚本来在netcat完成它的工作之后添加元数据文本,因为我们需要一些方法来识别正在被写入的stream,因为多个stream将写入同一个文件。 […]

写日志文件与运行服务的date

我用reactphp创build了一个服务,运行并执行一些操作。 它作为一个守护进程启动,所以所有的输出都应该logging在一个文件中。 这个日志文件应该被命名为“foo-log-file – $(date”+ F“)” 。 我想每天都有一个日志文件。 问题: 如上所述,脚本作为服务运行,而不是停止。 因此脚本的开始调用只能进行一次。 php my_script.php >> /var/log/bar/log-file–$(date "+%F") 2>&1 所以从这个脚本打印到控制台的所有内容都被保存到文件中,但是文件只有在被调用时才使用datestring创build,并且不会被更新为新date。 题: 有没有可能解决这个问题,而不写在PHP脚本的日志逻辑? 我可以用bash来处理这个需求吗?

通过路由器学习wanIP(wget)

通过翻译者提出的问题: 在centos需要知道路由器上的Wan IP并通过CMD将其保存到文件中。 最重要的是: wget http://user:pass@192.168.1.1/RST_conn_status.htm | sed 's/\(.*\)\.\(.*\)\.\(.*\)\.\(.*\)' 有必要在文件前添加该行。 TEST.TXT? 页面看起来像这样: <TABLE border=1 cellpadding=2 cellspacing=0 width=100%> <script> var info_get_wanip="213.121.21.121"; var info_get_wanmask="255.255.255.255"; var info_get_gateway="0.0.0.0"; var info_get_dns1="83.111.121.10"; var info_get_dns2="83.111.121.14"; var ppp_uptime="338946"; var bpa_uptime="0"; var monthly_limit_reached="0"; 我需要从test.txt中的info_get_wanip写入数据

Makefile命令后检查日志的最好方法

我的一个项目的Makefile在functiontesting步骤的无头浏览器上运行了一堆testing。 大部分testing是针对前端代码的,但是我也会检查后端的任何错误/警告。 目前,我们正在清理Web服务器日志,运行所有(非常慢)的testing,然后在服务器日志中查找任何错误或警告。 我想知道是否有任何方法让侦听器从后台开始parsing日志(例如tail -f | grep ),并在testing运行期间检测到任何错误/警告时终止make target。 我到目前为止是 在后台启动长时间的grep并存储PID。 运行testing。 检查长寿命的grep的输出 杀死PID。 如有任何错误,则失败。 这只是给我的好处,现在我每次都不会丢失我的开发包上的服务器日志,因为我不必每次都清理它。 但是我还是要等很长时间(几分钟)才能发现第一个失败。 有没有解决scheme?

Unix:上一个命令 – 如何执行文件input的子命令?

我正在尝试阅读旧的最后一个文件,但是当我使用下面的命令它不能按预期的方式工作。 有一种方法可以在一行中完成吗? last -f `zcat /var/log/wtmp.1.gz` 我想能够读取文件,而不需要解压文件。 长版本如下: zcat /var/log/wtmp.1.gz > /var/tmp/login last -f /var/tmp/login

在Bash脚本和捕获输出时使用&符号(&)在后台使用叉子命令

我希望在后台分支进程,同时捕获bash脚本中的输出。 我可以运行以下脚本来Ping一个IP列表,并将每个呼叫转移到后台并运行得非常快。 但是它不会捕获执行命令的输出以进一步处理。 for i in $(cat list.txt); do ping -c 1 $i & done 我希望在命令中用&符运行这个表单的脚本,以在后台推送每个ping命令,但是与上面的脚本相比,它运行速度非常慢,这表明脚本没有并行执行。 for i in $(cat list.txt); do y=$( ping -c 1 $i & ) echo "$y" done 请告知如何在捕获命令输出的同时在后台执行并行执行 谢谢约翰

R – 通过ssh连接并执行命令

我想通过SSH连接到networking中的某些设备。 必要条件是: 它必须运行一个命令并捕获R中的ssh会话的输出(或者用bash或者其他的编程语言,但是我更喜欢用R语言) 它必须input一个纯文本密码(因为这个设备以前没有被访问过,所以不能用rsa密钥对来修改),所以ssh.utils软件包不符合这个要求 sshpass不能使用,因为我注意到它不适用于我testing的一些设备。 我已阅读所有这些post,但我找不到一个有效的方式来执行它: 链接1 , 链接2 , 链接3 , 链接4 我知道要求很难完成,但感谢您的努力! 编辑: 对不起,如果我没有让自己理解。 我的意思是我在R本地工作,我想通过SSH连接到我所有networking中的+3000设备。 它是Ubiquiti设备,唯一的开放端口是80和22。 如果ssh不起作用,我将使用R的RSelenium软件包,并从端口80中提取信息。但首先我会尝试使用ssh pory 22,因为它比打开模拟浏览器更有效率。 所有这些Ubiquiti设备的大问题是,他们有一个密码login。这就是为什么需要2号。 当我必须进入我知道的服务器时,我花时间设置rsa密钥对,以便每次连接到特定的服务器时不必input密码,但这是不可能的(至less对我来说是不可能的)用这些关键字configuration所有+3000 Ubiquiti设备。 这就是为什么我不使用snmp的原因,例如,因为这个设备可能会激活它,或者snmpconfiguration是错误的。 我的意思是,我必须使用默认激活的东西,并以某种方式sorting。 只有端口80和端口22被激活,我知道所有的用户和密码的设备。 而sshpass是UNIX / Linux中的一个实用程序, 就像这个链接解释说 ,它适用于服务器,但不适用于Ubiquiti设备,只要我已经testing过了。 所以我不能使用它。 我需要从中提取输出的命令是mca-status 。 简单地通过input到控制台使它打印一些统计数据,我想从Ubiquiti设备。 请纠正我,如果我错了我已经发布的东西。 谢谢。