- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我创建了一个脚本,可以轻松设置多个 Postfix 并分配一些东西。
比如有一部分是
postmulti -e init
postmulti -I postfix-$new -e create
echo "mydomain = $domain" >> /etc/postfix-$new/main.cf
echo "queue_directory = /var/spool/postfix-$new" >> /etc/postfix-$new/main.cf
echo "smtp_bind_address = $ip" >> /etc/postfix-$new/main.cf
sed -i "s/oldip/$ip/g" /etc/postfix-$new/main.cf
echo "/n*@$domain default._domainkey.$domain" >> /etc/opendkim/SigningTable
sed -i "s/cyberciti.com/$domain/g" /etc/postfix-$new/main.cf
这个脚本有三个需求$new
$ip
和$domain
计划是在一个文件中包含很多这样的内容,然后 bash 将为每个数据行运行的整个脚本(见下文)
new1, 1.1.1.1, myweb.com
new2, 2.2.2.2, myweb2.com
目前由 ,
分隔,但我可以将其设置为任何值
我该怎么做?
最佳答案
将数据文件中的分隔符设置为空格。你通常可以避免使用逗号——它们在 Unix 系统中很少有用。调用文件new_postfix_domains
(为了具体讨论)。
或多或少按照以下几行编写脚本:
while read new ip domain
do
config="/etc/postfix-$new/main.cf"
postmulti -e init
postmulti -I postfix-$new -e create
echo "/n*@$domain default._domainkey.$domain" >> /etc/opendkim/SigningTable
{
echo "mydomain = $domain"
echo "queue_directory = /var/spool/postfix-$new"
echo "smtp_bind_address = $ip"
} >> "$config"
sed -i -e "s/oldip/$ip/g" \
-e "s/cyberciti.com/$domain/g" "$config"
done
运行脚本:
bash add_new_postfix_domains.sh < new_postfix_domains
注意事项:
该脚本使用 { … } > "$config"
符号将配置文件的多个输出组合成一个操作序列。请注意,{
和 }
的句法要求有些特殊。 {
必须是一个单独的词(被空格包围),而 }
必须是一个单独的词,命令可以从哪里开始(例如在一个命令的开头)行,或在分号之后)。
您只需使用 sed
编辑文件一次。我假设 postmulti … create
步骤使用需要编辑的模板创建了配置文件。否则,sed
命令没有任何意义。
使用变量捕获一次配置文件名;此后使用变量来引用文件。
您应该考虑各种形式的数据验证。例如,这将接受数据中的一个空行,并为各种组件创建一个包含空白的条目。也许您应该稍微验证一下 IP 地址,也许还应该验证一下域名。如果数据文件可能被搞砸了,您可能需要在 read
中添加一个额外的“列”:read new ip domain junk
其中在 中捕获垃圾>$junk
并忽略(或在该行被忽略之前报告)。
您可能想报告您正在做的事情。
有些人会争辩说您应该使用 read -r
而不是仅仅 read
以便以不同方式处理古怪的输入。我认为这在这里不相关 — GIGO如果使用该脚本的人应该是理智的,并且最好是知识渊博的,那么这是合理的。如果您愿意,可以预先验证输入数据。例如,您可以使用 sed
对输入进行预处理,弹出任何与三个字段不匹配的行,中间字段是 IPv4 地址,最后一个是合理的域名,第一个是标识符没有不当标点符号的要求。
您可以修改脚本以从文件名参数列表中读取,或者如果命令行中未提供名称,则从标准输入中读取。如果您预先过滤输入,那将是微不足道的: sed -e '…editing script…' "$@"|而读取新的 ip 域
就可以完成这项工作。
关于linux - 读取文件 "$"数据和 bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31205455/
我有 powershell 脚本。通过调度程序,我运行 bat 文件,该文件运行 PS1 文件。 BAT文件 Powershell.exe -executionpolicy remotesigned
什么更快? 或者 $.getScript('../js/SOME.js', function (){ ... // with $.ajaxSetup({ cache: true });
需要bash脚本来显示文件 #!/bin/bash my_ls() { # save current directory then cd to "$1" pushd "$1" >/dev/nu
我有一个输入 csv 文件,实际上我需要在输入文件中选择第 2 列和第 3 列值,并且需要转换两个值的时区(从 PT 到 CT),转换后我需要替换转换后的时区值到文件。 注意: 所有输入日期值都在太平
我正在使用/etc/init.d/httpd 作为 init.d 脚本的模板。我了解文件中发生的所有内容,但以下行除外: LANG=$HTTPD_LANG daemon --pidfile=${pid
我有以下选择: python runscript.py -O start -a "-a "\"-o \\\"-f/dev/sda1 -b256k -Q8\\\" -l test -p maim\""
我对 shell 脚本完全陌生,但我需要编写一个 shell 脚本来检查文件是否存在,然后移动到另一个位置 这是我写的: 一旦设备崩溃,我就会在/storage/sdcard1/1 中收集日志 #!/
我正在使用 bash 脚本从文本文件中读取数据。 数据: 04:31 Alex M.O.R.P.H. & Natalie Gioia - My Heaven http://goo.gl/rMOa2q
这是单击按钮时运行的 javascript 的结尾 xmlObj.open ('GET', /ajax.php, true); xmlObj.send (''); } 所以这会执行根目录中的php脚本
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我需要将文件转换为可读流以通过 api 上传,有一个使用 fs.createReadStream 的 Node js 示例。任何人都可以告诉我上述声明的 python 等价物是什么? 例子 const
我有一个 shell 脚本 cron,它从同一目录调用 python 脚本,但是当这个 cron 执行时,我没有从我的 python 脚本中获得预期的输出,当我手动执行它时,我的 python 脚本的
如何使 XMLHttpRequest (ajax) 调用的 php 脚本安全。 我的意思是,不让 PHP 文件通过直接 url 运行,只能通过脚本从我的页面调用(我不想向未登录的用户显示数据库结果,并
我正在尝试添加以下内容 我正在使用经典的 asp。但我不断收到的错误是“一个脚本 block 不能放在另一个脚本 block 内。”我尝试了此处的 document.write 技术:Javasc
如何从另一个 PHP 脚本(如批处理文件)中运行多个 PHP 脚本?如果我了解 include 在做什么,我认为 include 不会起作用;因为我正在运行的每个文件都会重新声明一些相同的函数等。我想
我想创建具有动态内容的网页。我有一个 HTML 页面,我想从中调用一个 lua 脚本 如何调用 lua 脚本? ? ? 从中检索数据?我可以做类似的事情吗: int xx = 0; xx
我删除了我的第一个问题,并重新编写了更多细节和附加 jSfiddle domos。 我有一个脚本,它运行查询并返回数据,然后填充表。表中的行自动循环滚动。所有这些工作正常,并通过使用以下代码完成。然而
我尝试使用 amp 脚本,但收到此错误: “[amp-script] 脚本哈希未找到。amp-script[script="hello-world"].js 必须在元[name="amp-script
我有一个读取输入的 Shell 脚本 #!/bin/bash echo "Type the year that you want to check (4 digits), followed by [E
我正在从 nodejs 调用 Lua 脚本。我想传递一个数组作为参数。我在 Lua 中解析该数组时遇到问题。 下面是一个例子: var script = 'local actorlist = ARGV
我是一名优秀的程序员,十分优秀!