我/etc/init.d/iptables start|stop|restart在不同的 ubuntu 服务器上有一个脚本(这是一个普通的 shell 脚本)
对于每个新服务,我必须编辑并插入一行以打开端口。这导致不同机器上有许多不同版本的 init.d 脚本。
是否可以自动包含假设所有文件/etc/iptables/include.d/?
目标是在/etc/init.d/iptables的启动函数中应该只有一行,如
include /etc/iptables/include.d/*
Run Code Online (Sandbox Code Playgroud)
在/etc/iptables/include.d/我添加了一个附加文件之后,我只想说
/etc/init.d/iptables restart
Run Code Online (Sandbox Code Playgroud)
编辑:正如 Saurabh 指出的那样,当命令需要特定顺序时,这可能会导致问题。高级设置可能有不同的目录,例如:
/etc/iptables/include01.d/
/etc/iptables/include02.d/
/etc/iptables/include03.d/
Run Code Online (Sandbox Code Playgroud)
并像这样包括它们:
包含 /etc/iptables/include01.d/*
...也许一些代码在主文件中......
包括/etc/iptables/include02.d/*
包括/etc/iptables/include03.d/*
请原谅我对 linux 操作系统/硬件问题的无知......我只是一个程序员 :)
我有一个应用程序调用一些 bash 脚本来启动外部应用程序,在这种情况下是 Firefox。该应用程序在具有触摸屏功能的信息亭上运行。在启动 Firefox 时,我还启动了一个允许用户进行键盘输入的虚拟键盘应用程序。
然而,信息亭还具有 PS/2 和 USB 插槽,允许用户插入键盘。如果插入了键盘,如果我不必启动虚拟键盘并为 Firefox 窗口提供更多屏幕空间,那就太好了。
有没有办法让我检测键盘是否从 bash 脚本插入?它会出现在 /dev 中,如果是,它会出现在一致的位置吗?如果用户使用 PS/2 或 USB 键盘会有所不同吗?
谢谢!
如何使用 sed、grep 或其他程序删除文件中标记文本块的所有实例?
如果我有一个包含以下内容的文件:
随机
文本
// START TEXT
内部
文本
// END TEXT
更
随机
// START TEXT
asdf
// END TEXT
文本
如何删除开始/结束行中的所有文本块,生成以下内容?
随机
文本
更多
随机
文本
寻找一种在 linux 上预先创建目录以用于存储大量文件的方法。
我们将使用GUID生成文件 ID - 我需要在 Linux Web 服务器上保留这些文件的副本。我计划使用子目录来拆分文件(它是 ext3)...例如,文件名 055c102b-62fb-4671-a3c7-68b9515ec53e.swf 将位于 /data/files/0/5/5/055c102b- 62fb-4671-a3c7-68b9515ec53e.swf(取前3个字符作为目录名)
我的问题是 - 如何提前创建 /data/files/?/?/?/ 目录?在哪里 ?可以是 az 或 0-9
我的客户让我将一些文件夹部署到他客户网站的一堆主目录中。我使用 Bash 脚本完成了此操作,但最终使用了 root 帐户权限。
我如何制作一个 Bash 脚本来获取 /home/用户下的每个文件夹(不是隐藏文件或文件夹),获取该文件夹的用户和组所有权,然后执行 chown -R {user}.{group} /home /用户?
服务器正在运行 CentOS Linux。
我在 Ubuntu 10.04 上使用 Subversion 1.6.6,运行 bash shell。我想在我的提交消息中插入回车、换行或换行符,以便在阅读日志时,注释的格式正确。当我使用系统编辑器或为提交注释指定一个文件时,它工作正常,但我真正想要的是能够执行以下操作:
svn ci -m "This is the first line\nThis is the second line"
Run Code Online (Sandbox Code Playgroud)
并将评论显示为:
This is the first line
This is the second line
Run Code Online (Sandbox Code Playgroud)
我的例子不起作用,它产生输出:
这是第一行\n这是第二行
那么,有没有办法做到这一点?如果是这样,如何?
我们有一个构建在 CentOS 4 32 位 Linux 上的产品,它可以在 32 位和 64 位 CentOS/RHEL 4 和 5 以及 SLES 10 上未经修改地运行。它也在 SLES 9 64 位上未经修改地运行。[SLES 9 32 位需要不同的 libstdc++。
主二进制可执行文件的名称是 flume
昨天我们尝试将它放在 64 位 Ubuntu 10 上,即使文件在那里并且大小合适,我们也会得到:
-bash: ./flume: No such file or directory
Run Code Online (Sandbox Code Playgroud)
file flume
显示它是一个 32 位 ELF(不记得确切的输出,并且系统位于隔离网络上)
如果放入/usr/local/bin,则:
which flume
/usr/local/bin/flume
Run Code Online (Sandbox Code Playgroud)
我还没有尝试
ldd flume
。
我现在怀疑某个图书馆不存在。
这是一个非常无益的信息,也是我以前从未见过的。
这是 Ubuntu 特有的,还是仅此安装特有的。
我们放弃并转向 RHEL 4 系统,一切都很好。但我确实想知道是什么导致了这种情况。
我就是做不到。如果 * 在变量中,则扩展为当前文件夹中的文件列表。echo "*" 工作正常。
#!/bin/bash
c="GRANT ALL ON \*.* TO '$1'@'localhost';"
mysql < $c
exit 0;
Run Code Online (Sandbox Code Playgroud) 我想从命令行将 github.com 添加到 known_hosts 文件,因为我正在创建一个 puppet 清单来配置远程服务器。
我试过了:
"ssh-keyscan -H github.com > /home/ubuntu/.ssh/known_hosts"
Run Code Online (Sandbox Code Playgroud)
但是当服务器尝试访问github时:
Failed to add the RSA host key for IP address '207.97.227.239' to the list
of known hosts (/home/ubuntu/.ssh/known_hosts).
Run Code Online (Sandbox Code Playgroud)
我也试过:
"ssh-keyscan -H github.com,207.97.227.239 > /home/ubuntu/.ssh/known_hosts"`
Run Code Online (Sandbox Code Playgroud)
但是访问github抛出:
Host key verification failed.
Run Code Online (Sandbox Code Playgroud)
我确定这没有其他用途,但是如果我 ssh 我的服务器,然后 ssh github 并按照步骤操作,我会收到以下消息Permanently added 'github.com,207.97.227.239' (RSA) to the list of known hosts,然后它将完美运行。
谢谢
我有这样的 bash 代码(Mac OS X):
foo.sh | tee foo.log
echo $?
问题是那$?包含 tee 的退出代码而不是 foo.sh 的退出代码。如何获取 foo.sh 的退出代码?