Articles of bash

如何使一个简单的脚本,增加一个数字字符1

我必须添加一个命令为许多vlans,并想知道如果我可以生成一个简单的文本文件? 然后,我可以简单地将文本文件粘贴到networking交换机中,并添加所需的行。 基本上,这个单一的命令: ip dhcp-relay 10.32.150.129 10.32.50.1 enable 将需要连续执行,随着.50增加1。 所以它会是,.50,.51,.52,.53 …… 所以它会生成一个文件,如: ip dhcp-relay 10.32.150.129 10.32.50.1 enable ip dhcp-relay 10.32.151.129 10.32.51.1 enable ip dhcp-relay 10.32.152.129 10.32.52.1 enable 等等… 这是我的脚本 #!/bin/bash if xy=50 echo "ip dhcp-relay 10.32.150.129 10.32.50.1 enable" >> pastethisinswitch.txt echo "ip dhcp-relay 10.32.1xy.129 10.32.xy.1 enable" >> pastethisinswitch.txt xy+1 until xy=99 done

导出或转发/ var / spool / mail / USER(客户可读)

/var/spool/mail/USER目录中有一些反弹邮件无法发送。 现在客户收到我们所有的邮件,因为他没有直接访问他们。 我可以一个接一个地转发,但是其中有很多。 有没有捷径可以… …将所有邮件作为附件发送给客户? …将所有邮件与他们的附件在一个棘手的脚本? 这似乎并不罕见,所以我希望有人知道解决scheme。 干杯!

Solaris + date +与Solaris相同

在Linux上,date和秒的语法是: date +%s 1438587288 从MAN PAGE – %s秒1970-01-01 00:00:00 UTC以来 什么是相同的Solaris相同?

如果运行没有path的命令,子shell是不会创build的?

我正在阅读“ Linux命令行和Shell脚本圣经 ”第3版。 在279页,在这里我引用: “命令replace创build了所谓的subshell来运行封闭的命令,子shell是一个独立的子shell,由运行脚本的shell生成,因此,在脚本中创build的任何variables都不可用于subshel​​l命令。 如果您使用./path从命令提示符运行命令,也会创build子./ ,但是如果只是不使用path运行命令,则不会创build它们。 最后一句话让我感到困惑。 我testing了一个简单的脚本,输出一些variables; 在脚本存在后,variables不会持续,但脚本是从./path调用的,或者将脚本放在/usr/bin然后运行而不用path。 在我看来,它是如何调用关于subshel​​l没有区别。 我错过了什么?

Linux发现:如何从find的结果中排除“.snapshot”目录?

我编写了一个rsync脚本,它使用find命令查找所有超过10分钟的文件并将其复制到远程服务器。 代码的相关部分是: print_log "—— Starting $0 ——-" find $filedir -name \*.gz -mmin +10 >> $varfile for line in $(awk -F"/" '{print $4}' $varfile); do rsync -raPv –ignore-existing –remove-source-files –chmod=u+rwx $filedir/$line rsync://[email protected]/hpfiles/ –password-file /etc/rsync.passwd done 我遇到的问题是与find命令有关,运行脚本时我得到下面的响应,而它挂在那里,不会继续: [appadmin@srv01 ~]$ /nfs/hadooper/rsync_hpfiles-lock.sh >> /var/log/rsync_hpfiles.log find: File system loop detected; `/mass1/hpfiles_staging/.snapshot' is part of the same file system loop as […]

在哪里设置用户的bash设置“mysql”

如果问题有误导性,请原谅。 我想了解环境设置为用户“mysql”工作的方式。 我遵循本指南从MariaDB安装连接Oracle数据库。 我已经设法安装所需的库,并成功从根命令行连接。 但是当试图从MariaDB连接时,我得到这个消息: [unixODBC] [驱动程序pipe理器]无法打开lib'/home/oraclec/instantclient_12_1/libsqora.so.12.1':文件未find 第一次尝试从根命令行进行连接时发生了同样的情况,我解决了将这些行添加到/root/.bash_profile文件的问题: CLIENT_HOME=/home/oraclec/instantclient_12_1 ; export CLIENT_HOME LD_LIBRARY_PATH=/home/oraclec/instantclient_12_1 ; export LD_LIBRARY_PATH 所以,我想为用户“mysql”做同样的事情,但是这个用户没有.bash_profile 。 总之,我应该在哪里放置这些path才能让用户“mysql”访问它们? 注意:服务器正在运行CentOS 6.5。

如果inotifywait不可用,如何查看arrivng文件?

当其他机器通过FTP发送文件时,我有一个目录被写入。 我想在文件到达的时候注意一些事情,如果文件名包含一个特定的子string(如“jpg”),将文件移动到其他目录(只有在文件完成到达之后,而不是之前) 我想把它放在许多不同种类的Linux机器上。 一个这样的盒子有Linux内核2.4.22。 有可能有更旧的。 我还在检查。 在旧的机器上,我看到: inotifywait: command not found 。 我也看到: The inotify API is available in Linux 2.6.13 and later 而这个: bash: watch: command not found 在POSIX sh或bash或C中的想法可以工作。 Perl和Python可能无法在任何地方运行。 我没有安装软件包的权限。

从标准input压缩到标准输出 – funzip,python

目标是从标准input读取压缩文件并解压缩到标准输出。 Funzip的作品,是我正在寻找的解决scheme,该zip包含一个单一的文件,不幸的是,当压缩文件大小大约是1GB或更大时,funzip失败: funzip error: invalid compressed data–length error 更新:我发现上面的错误可能不表示一个实际的错误。 比较两个未压缩的文件,一个传统解压缩,另一个通过使用funzip的pipe道(将上面的错误写入stderr)文件是相同的。 我想保持这个开放,所以这可以确认或报告。 一个相关的解决scheme使用python: 解压缩通过pipe道飞入的文件 但是,这个输出被定向到一个文件。

如何在Centos的每个login中运行一个shell脚本

其实我想在每次用户login时以及在启动时运行我的shell脚本。 我已经尝试使用使用crontab,但它只在启动时运行,而不是在每一个login.so请告诉我如何做到这一点。 #crontab -e @reboot /home/user/test.sh

连接到VPN后无法远程访问Apache Web服务器

我有一个安装在我的电脑上的apache web服务器,如预期般工作,直到我使用他们的软件连接到我的VPN服务提供商(私人互联网访问)。 一旦连接,我无法再每次尝试访问Web服务器(使用我的ISP的公共IP地址123.4.5.6 ) Connection Timeout错误。 但是,networking服务器将保持通过我的局域网(使用LAN IP地址192.168.0.6 )。 据我所知,这是我的networking图(isp和vpn ips不是真正的): 以下是关于networking收集的一些信息(我禁用了我的UFW防火墙并刷新了所有的iptables规则,以排除防火墙引起的可能性): 连接到VPN之前: me@mypc:~$ route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0 192.168.0.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0 me@mypc:~$ ifconfig eth0 Link encap:Ethernet HWaddr 00:1d:09:b4:b9:21 inet addr:192.168.0.6 Bcast:192.168.0.255 Mask:255.255.255.0 […]