Questions tagged «scripting»

脚本是由解释程序执行而不是编译为独立可执行程序的命令或指令序列。

25
永远每隔X秒重复Unix命令
有一个内置的Unix命令,repeat其第一个参数是重复命令的次数,其中命令(带有任何参数)由的其余参数指定repeat。 例如, % repeat 100 echo "I will not automate this punishment." 将回显给定的字符串100次,然后停止。 我想要一个类似的命令-叫做它forever-除了它的第一个参数是重复之间暂停的秒数,而且它永远重复之外,它的工作原理相似。例如, % forever 5 echo "This will get echoed every 5 seconds forever and ever." 我以为在写之前会问这样的事情是否存在。我知道这就像2行Perl或Python脚本,但是也许有更标准的方法可以做到这一点。如果没有,请随意以您喜欢的脚本语言Rosetta Stone风格发布解决方案。 PS:也许这样做的更好方法是概括repeat重复次数(-1表示无穷大)和两次重复之间睡眠的秒数。以上示例将变为: % repeat 100 0 echo "I will not automate this punishment." % repeat -1 5 echo "This will get …

3
在脚本中使用“ $ {a:-b}”进行变量分配
我一直在看别人写的一些脚本(特别是Red Hat),其中许多变量是使用以下表示法分配的, VARIABLE1="${VARIABLE1:-some_val}" 或者扩展了其他变量 VARIABLE2="${VARIABLE2:-`echo $VARIABLE1`}" 使用这种表示法而不是直接声明值(例如VARIABLE1=some_val)有什么意义? 这种表示法是否有好处,还是可以避免的错误? :-在此上下文中是否具有特定含义?

8
在shell脚本上允许setuid
该setuid权限位告诉Linux与业主,而不是执行者的有效用户ID运行程序: > cat setuid-test.c #include <stdio.h> #include <unistd.h> int main(int argc, char** argv) { printf("%d", geteuid()); return 0; } > gcc -o setuid-test setuid-test.c > ./setuid-test 1000 > sudo chown nobody ./setuid-test; sudo chmod +s ./setuid-test > ./setuid-test 65534 但是,这仅适用于可执行文件。Shell脚本忽略setuid位: > cat setuid-test2 #!/bin/bash id -u > ./setuid-test2 1000 > …


3
如何在远程计算机上执行本地脚本并包含参数?
我编写了一个在本地执行时可以正常运行的脚本: ./sysMole -time Aug 18 18 参数“ -time”,“ Aug”,“ 18”和“ 18”已成功传递到脚本。 现在,该脚本旨在在远程计算机上执行,但是可以从本地计算机上的本地目录执行。例: ssh root@remoteServer "bash -s" < /var/www/html/ops1/sysMole 那也很好。但是,当我尝试包括上述论点(时间为8月18日18)时,就会出现问题,例如: ssh root@remoteServer "bash -s" < /var/www/html/ops1/sysMole -time Aug 18 18 运行该脚本后,出现以下错误: bash: cannot set terminal process group (-1): Invalid argument bash: no job control in this shell 请告诉我我在做什么错,这非常令人沮丧。

3
将命令行参数传递给bash脚本
我是bash脚本编程的新手。 我想实现一个bash脚本'deploymLog',该脚本接受一个字符串参数(名称)作为输入。 [root@localhost Desktop]# ./deploymLog.sh name 这里我想通过命令行传递字符串参数(名称) 首先,我需要将当前时间戳以及此输入字符串附加Logone.txt到以下格式的日志文件中: [name]=[System time timestamp1] 怎么可能?
114 bash  shell  scripting 

6
混淆&&和||的使用 经营者
我浏览了一个/etc/rc.d/init.d/sendmail文件(我知道这几乎没用过,但是我正在学习考试),并且对&&和||操作符有些困惑。我已经阅读了可以在诸如以下语句中使用它们的地方: if [ test1 ] && [ test2 ]; then echo "both tests are true" elif [ test1 ] || [ test2 ]; then echo "one test is true" fi 但是,此脚本显示单行语句,例如: [ -z "$SMQUEUE" ] && SMQUEUE="QUEUE" [ -f /usr/sbin/sendmail ] || exit 0 这些似乎正在使用&&and ||运算符基于测试得出响应,但是我无法从这些运算符的这种特殊用法中提取文档。谁能解释在特定情况下这些工具的作用?

6
如何用bash加(减等)两个数字?
我可以阅读其中的数字和操作: echo "First number please" read num1 echo "Second number please" read num2 echo "Operation?" read op 但是后来我所有加法的尝试都失败了: case "$op" in "+") echo num1+num2;; "-") echo `num1-num2`;; esac 跑: First number please 1 Second mumber please 2 Operation? + 输出: num1+num2 ...要么... echo $num1+$num2;; # results in: 1+2 ...要么... echo …

6
没有密码的自动ssh-keygen,怎么办?
我想制作一个自动脚本,该脚本调用ssh-keygen并创建一些发布/专用密钥对,稍后将使用它们。原则上,一切都可以正常工作 ssh-keygen -b 2048 -t rsa -f /tmp/sshkey -q 。目前,这使自动化变得困难。 我可以通过命令行参数提供密码-N thepassphrase,以防止出现提示。仍然我什至不希望拥有密钥- 此外还通过加密保护 -并希望密钥对为纯文本。 什么是(最佳)解决方案? 该-q选项可能意味着“安静/安静”,仍然不能避免密码短语的交互。我也没有找到这样的东西 ssh-keygen ...... -q --no-passphrase 请注意,请不要开始宣讲“丢失密码短语”的优缺点或向我讲授“丢失密码短语”的优缺点。以交互形式(不是脚本),用户只需按两次[ENTER]键,该键将另存为纯文本。这就是我想要在这样的脚本中实现的功能: #!/ bin / bash command1 命令2 var = $(command3) #这不应该停止脚本并要求输入密码 ssh-kegen -b 2048 -t rsa -f / tmp / sshkey -q
86 ssh  scripting 

5
shebang是否确定运行脚本的shell?
这可能是一个愚蠢的问题,但我仍然要问。如果我宣布了射手 #!/bin/bash 在的开头my_shell_script.sh,所以我总是必须使用bash调用此脚本吗? [my@comp]$bash my_shell_script.sh 或者我可以使用例如 [my@comp]$sh my_shell_script.sh 我的脚本使用shebang确定正在运行的shell?kshShell 发生了同样的事情吗?我正在使用AIX。

3
在脚本中包含$“美元符号前缀的字符串”是什么意思?
我刚刚在初始化脚本中看到了这一点: echo $"Stopping Apache" 那美元符号是做什么用的? 到目前为止,我的研究: 我在bash手册中发现了这一点: 引号 如果设置,$'string'并且$"string"加引号内执行${parameter}双引号括起来的扩展。默认情况下启用此选项。 ...但是我没有发现带有和不带有$前缀的字符串之间的任何区别: $ echo "I am in $PWD" I am in /var/shared/home/southworth/qed $ echo $"I am in $PWD" I am in /var/shared/home/southworth/qed $ echo $"I am in ${PWD}" I am in /var/shared/home/southworth/qed $ echo "I am in ${PWD}" I am in /var/shared/home/southworth/qed …

6
使用while循环SSH到多个服务器
我有一个文件servers.txt,其中包含服务器列表: server1.mydomain.com server2.mydomain.com server3.mydomain.com 当我逐行读取文件while并回显每一行时,所有文件均按预期工作。所有行均已打印。 $ while read HOST ; do echo $HOST ; done < servers.txt server1.mydomain.com server2.mydomain.com server3.mydomain.com 但是,当我要SSH到所有服务器并执行命令时,突然我的while循环停止工作: $ while read HOST ; do ssh $HOST "uname -a" ; done < servers.txt Linux server1 2.6.30.4-1 #1 SMP Wed Aug 12 19:55:12 EDT 2009 i686 GNU/Linux 这仅连接到列表中的第一台服务器,而不连接到所有服务器。我不明白这里发生了什么。有人可以解释一下吗? 这甚至更陌生,因为使用for循环可以正常工作: …

2
su options-以其他用户身份运行命令
我想知道如何从脚本中以另一个用户的身份运行命令。 我将脚本的所有者设置为root。我还在脚本中运行以下命令以以hudson用户身份运行该命令: su -c command hudson 这是正确的语法吗?
75 bash  scripting  su  sudo 

9
如何grep表示相同的字符串,但同时有多个文件?
我有一组日志文件需要查看,我想一次在同一文件上搜索特定的字符串是否可以?目前我正在使用 grep -E 'fatal|error|critical|failure|warning|' /path_to_file 如何使用此功能并一次搜索多个文件的字符串?如果这需要编写脚本,那么有人可以提供简单的脚本来执行此操作吗?
57 scripting  grep 


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.