Questions tagged «shell-script»

Shell脚本是为操作系统的Shell(或命令行解释器)编写的脚本。


1
Shell脚本没有与cronjob一起运行
我正在使用PUTTY来访问服务器。我可以使用以下命令转储数据库: /usr/bin/mysqldump --all-databases | /bin/gzip > Backup_DB/alldatabases_test.sql.gz 当我从root运行脚本时,该文件被转储到指定的文件夹中: root@server1 [~]# sh mybackup.sh root@server1 [~/Backup_DB]# ls -a ./ ../ alldatabases_test.sql.gz 但是,当我把它设置为cronjob时,它并没有倾倒任何东西: */2 * * * * sh mybackup.sh 其他cronjobs工作正常。 编辑 因此运行脚本无效,但感谢您的帮助。 我的最终目标是从我所有其他cronjobs所在的地方运行脚本,并在我有ftp访问权限的文件夹中创建备份。 这就是为什么我添加了一个cronjob: */2 * * * * sh /home/mysite/www/cronjobs/mybackup.sh 内容: /usr/bin/mysqldump --all-databases | /bin/gzip > /home/mysite/www/cronjobs/alldatabases.sql.gz 这也不起作用。我在/ cronjobs文件夹中找不到alldatabases.sql.gz。路径设置错了吗?


3
为什么useradd不起作用?
我正试图找出我想要创建的RPM的扭结。基本上,我试图这样做,如果 mark 在系统上不存在,我想创建一个标记用户帐户。我有一个 %pre 阻止我的.spec文件: id mark &>/dev/null if [ "$?" != "0" ]; then echo "Adding 'mark' user..." useradd -g $GROUP_ID \ -s /bin/bash -d mark fi 现在,在我构建RPM并运行之后 rpm -ivh iPackage-1.0.0-1.noarch.rpm,我检查输出并看到“添加'标记'用户...”,但是当我跑 id mark 在命令行上,我明白了 id: mark: No such user。也, /etc/passwd 也没有标记帐户。有任何想法吗? 编辑:看我的回答。事实证明,需要定义变量。

1
如果发生了变化,请查找并发送邮件,unix
运行以下脚本并查找是否已更改任何新suid,并将输出重定向到文件。 我想在脚本中添加一个mail命令,将邮件发送到someone@domain.com。如果已进行更改,请添加主题行(“已进行更改”)并附加文件( changes.new )。如果未进行任何更改,请添加不同的主题行(“未进行任何更改”)。 #!/usr/local/bin/bash if [ ! -f "$/suid.old" ] then find / -perm -4000 -o -perm -2000 > ol.list else find / -perm -4000 -o -perm -2000 > new.suid diff suid.old suid.new > changes.new fi

2
从文本文件生成具有特定结构的新文件
在Linux上我有文件 orig-file.txt。此文件现在包含4个字段,但它们可能更少或更多(此文件由其他应用程序生成)。 什么是翻译的最佳选择 orig-file.txt 到像这样的文件 output-file.txt 文件(可能是shell脚本或awk等) 原稿-file.txt的 CREATE_TIMESTAMP TELEPHONE_NUMBER ID TYPE ------------------- -------------------- ---------- ----------------- 24-09-2009 16:17:45 33633333333 20 other_mmm_phone 24-09-2009 17:45:07 33644444444 20 other_mmm_phone 07-10-2009 10:45:49 12312312312 20 legacyphone 07-10-2009 11:46:38 59320000043 20 other_mmm_phone 输出file.txt的 CREATE_TIMESTAMP -> 24-09-2009 16:17:45 TELEPHONE_NUMBER -> 33633333333 ID -> 20 TYPE -> other_mmm_phone …

2
对于有条件的循环
我有一个脚本,可以在许多服务器上添加用户。因为我正在添加许多服务器,我正在使用循环。 以下是成功添加用户时的输出。 0,22529,User added. 如果未添加用户,则会收到此错误 1,23996,CLI failed to connect to database. 要么 1,22560,The current state of the server does not allow this action. script Begin read user echo -e '\E[32;40m'"\033[1mPlease wait .... adding id on all server\033[0m" PORT=777 USER=User PASSWORD=**** for server in server1.abc.com server2.abc.com do command // to add …


1
Bash Shell脚本选项处理:添加-all和-q(安静),强制不重复
我正在编写一个带有N个选项的Bash脚本。称它们为-1,-2,..., - N。以下适用于选项的使用: 可以提供任意数量的选项,从0到N. 没有选择采取任何论点 可以按任何顺序提供选项 我以一种相当标准的方式处理这些: while [[ $# -gt 0 ]] do OPTION="$1" case $OPTION in -1) process_option_1 shift ;; -2) process_option_2 shift ;; ... -N) process_option_N shift ;; *) echo "Unknown option $OPTION. Aborting..." exit 1 esac done 目标1 我想添加两个额外的选项: -all这意味着-1,-2,... -N的全部 -q这表示“安静”模式,即不向显示器打印任何内容 如果出现-all,则它必须单独出现或仅出现-q。 -q可以与“ -all ”或“-1 …

1
Linux流量控制退出到终端失败
我有一个流控制查询。当消息为:时HOSTNAME NOT ADDED IN /tmp/hosts EXITING,我想将脚本退出到终端,这是一条失败消息。 if grep -o 'abcdefgh01.was.db.dcbc' /tmp/hosts; then echo " HOSTNAME ADDED IN /tmp/hosts" elif [ $?==1 ]; then echo " HOSTNAME NOT ADDED IN /tmp/hosts EXITING"; exit fi|tee -a /tmp/log; 我尝试了上面的脚本,但失败时无法退出。我该如何解决?

1
使用'if'基于条件运行命令的awk脚本
我这里有一段代码基本上是一个名为'srcip'的文件(它只是一个IP地址列表),并将它与我的'〜/ db'文件进行比较,该文件只是我们拥有的服务器的制表符分隔的IP HOSTNAME数据库在我们的环境中。目标是获取'srcip'文件并将其与〜/ db文件中的内容进行匹配以获取主机名。它运行正常但由于DHCP问题,有很多IP地址故意不在〜/ db文件中,因此我们需要使用该host命令进行真正的主机查找。我想要的是基本上在这个awk代码中放置一个if语句来检查数据库中的IP是否不匹配,然后在该ip上运行host命令并给我输出。我怎么能在这里做到这一点? awk 'FNR==NR {a[$1]=$2; next} $1 in a && a[$1]!=$2 {print $1, a[$1], $2}' OFS="\t" srcip ~/db 我知道awk可以使用if下面这样的语句来检查是否有任何系统用户有/ bin / bash shell: awk -F':' '{ if ($3 < '500' && $7 != "/bin/bash" ) print $0 }' /etc/passwd 如上所述,我需要使用能够快速解析这些数据的东西,例如awk或sed,而不是依赖任何循环。请记住,我已经可以使用while循环执行此操作但是考虑到while循环的性质,它会逐行解析它并且我们使用起来很慢,因为我们有近100,000个IP可以一次解析(如果不是更多)。对于2000行,我可以运行这段代码但是这不是我想要做的: #!/bin/bash while read this_IP_address do db_host=$(grep "^$this_IP_address" …

1
如何在Linux机器上的文本文件中获取通过SSH在远程主机上执行的命令的输出?
如何在Linux机器上的文本文件中获取输出在远程主机上通过SSH执行的命令? 例如,我SSH远程主机: ssh admin@10.0.0.1 提供密码: admin@IP 10.0.0.1's password: xxxx 现在我命令获取日志: show eventlog 现在我想在文本文件中捕获并保存此命令的输出,并手动或通过脚本将该文件存储在本地Linux机器上。另外,如果我想从多个设备获取输出应该是什么过程?

1
Shell Script电子邮件输出格式
我正在尝试创建一个shell脚本,它回显了一堆命令,并且已经让它可以相当简单地发送电子邮件。 { echo $(hostname) echo "" echo "Uptime" $(uptime) echo "" echo "Who is on the server?" $(who) echo "" echo "Recent logs" $(last) }| mail -s "Homework Report" myemail@gmail.com 电子邮件上的输出都是单句,原始格式: myhostname.com 正常运行时间2:27 PM up 15:59,1位用户,平均负载:0.44,0.55,0.51 谁在服务器上?ec2-user pts / 0 Dec 17 14:26(pool-123-45-678-91.state.fios.verizon.net) 最近的日志ec2-user pts / 0 Dec 17 14:26 …



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.