Articles of shell

在shell脚本中设置环境variables以在远程服务器上运行

我有一个脚本,将自动在Hive中运行查询。 我可以把脚本留在本地机器上,或者把它放在网关机器上。 如果我在远程机器上,我可以像运行update_table ssh user@gatewaymachinexyz.com './update_table.sh' 但是,当我这样做时,它不能识别远程计算机上设置的环境variables。 如果我通过SSHlogin到远程机器,并运行./update_table.sh它运行良好。 如何从本地机器运行时识别环境variables?

列出帐户未被locking的用户

我创build了一个脚本,列出服务器中的用户列表,并通过电子邮件发送给他们。 我可以从多个主机获取用户列表,还可以在发送列表之前过滤名为ignore.txt(具有不需要的用户)的文件。 现在的挑战是, /etc/passwd具有账户被locking(不活动)的用户。 是否可以编辑下面的脚本并发送活动用户的列表,以及帐户被locking的用户列表? 新报告应反映活跃用户的列表以及禁用/locking用户的列表。 我目前的脚本如下: #!/bin/ksh #title :user.list.script.ksh #description :This script collects list of users from the server #note :Multiple hosts can be added #HOSTS format: HOSTS="00.00.00.00-DEV" #example "hostname-DEV" FILE=/home/zaira/report.txt #list will be saved in report.txt date > $FILE echo >> $FILE for host in $HOSTS; do ip=$(echo $host|cut -d '-' -f 1) […]

如何find使用shell脚本的两个文本文件之间的不寻常的行?

我有两个文本文件file1.txt&file2.txt file1.txt包含: a b c file2.txt包含: a b c d ef 输出应该是: d e f 我试图使用的命令是'diff file2.txt file1.txt'它只给出了通用行。

Linux Shell脚本来解压和分割文件输出不可读的文件

我有一个zip文件夹,其中包含多个相同格式的文件。 每个文件大小约为50 MB。 我需要将每个文件分成多个块(比如说,每个spillited输出文件有1000行)。 我已经写了一个shell脚本解压缩文件夹,并将分割文件输出保存在一个目录中。 问题是输出块是不可读的格式,包含符号和随机字符。 当我为每个文件单独执行时,它会输出完美的txt分割文件。 但是整个zip文件夹并没有发生。 任何人都知道如何以txt格式获取这些文件。 这是我的脚本。 for z in input.zip ; do if unzip -p "$z" | split -l 1000 $z output_dir ; then echo "$z" fi done

通过Bash从Cisco C40获得输出

背景 我们有一些思科C40,我试图通过bash自动化(虽然我会打开替代品)。 我需要login,拨打IP, 取回返回的呼叫ID,然后使用该CallID向远端发送DTMF音。 我能够获得大约90%的path,但出于某种原因,使用SSH不会返回使用交互式会话时返回的所有文本。 交互式Shell示例: login as: admin Using keyboard-interactive authentication. Password: Welcome to XXX TANDBERG Codec Release TC7.1.1.168aadf SW Release Date: 2014-04-11 *r Login successful OK xConfiguration Audio Volume: 0 ** end OK xCommand Dial Number: FAR_END_IP OK *r DialResult (status=OK): CallId: 73 ConferenceId: 44 ** end 非交互式Shell示例 没有ssh -T或ssh -t -t选项 这发生在call-init-step1.txt包含xConfiguration […]

在输出文件中打印列

我使用下面的命令得到了最后一个命令的输出 last -w -F | awk '{print $1","$3","$5$6$7$8","$11$12$13$14","$15}' | tac | tr ',' '\t' 现在为相同的输出,我想添加下面的列名称,然后复制到CSV文件或XLS文件。 有人可以帮我在这里。 列名称 USERNAME HOSTNAME LOGIN_TIME LOGOUT_TIME DURATION 输出看起来像这样 oracle localhost 2015 2.30 root localhost 2014 2.30 感谢你的帮助。

Bash:用零replace“nothing”

我得到的输出“没有”,我需要用“0”代替。 例如,我的文件已经如下所示: duse 1 和awk打印1 : surange < survey.su | grep duse | awk '{ print $2 }' 由于没有delrt ,代码没有给出该variables的结果: surange < survey.su | grep delrt | awk '{ print $2 }' 因为delrt不存在。 只要添加将输出redirect到一个文件: surange < survey.su | grep delrt | awk '{ print $2 }' > value 在使用file后说empty : $ file value value: empty […]

执行linux命令的PHP过早终止?

我正在尝试使用wkhtmltopdf将html文档转换为pdf。 我将在Linux上使用的命令: wkhtmltopdf 15.52579.html 15.52579.pdf 。 这首先输出像Loading pages (1/6) [> ] 0% [===== ,加载到100%,然后显示: Loading pages (1/6) Counting pages (2/6) Resolving links (4/6) Loading headers and footers (5/6) Printing pages (6/6) Done 我想要php来执行这个命令。 我尝试使用php的exec("wkhtmltopdf 15.52579.html 15.52579.pdf")和shell_exec("wkhtmltopdf 15.52579.html 15.52579.pdf") ,通过添加2>&1捕获stderr。 我也试过proc_open函数。 每次,我的结果是Loading pages (1/6) [> ] 0% [======> ] 10% 。 它看起来像命令返回太快,不允许程序完成,实际上创buildPDF。 php正在运行的用户具有执行该程序的正确权限。 脚本是由网页执行的,应该在几秒钟内完成。 我错过了什么?

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 请告知如何在捕获命令输出的同时在后台执行并行执行 谢谢约翰