小编Put*_*nik的帖子

如何在没有空格的情况下向bash别名添加参数?

我们可以轻松做到:

myalias='command param1 param2'
Run Code Online (Sandbox Code Playgroud)

然后myalias param3运行

command param1 param2 param3
Run Code Online (Sandbox Code Playgroud)

我需要一个运行相同但没有最后一个“空格”的别名:

command param1 param2param3
Run Code Online (Sandbox Code Playgroud)

例如,我在 /24 子网中有许多服务器,需要使用 ip 运行相同的命令。所以我想要别名,command param1 192.168.0.然后运行myalias 103,命令将应用于 192.168.0.103。

我试图$1在别名的末尾添加但没有运气。

bash alias

11
推荐指数
1
解决办法
5850
查看次数

运行具有未知 perl 位置的 perl 脚本

我正在开发一个 perl 脚本,希望由对 shell、linux 等了解很少的 Mac 用户下载,比如说办公室经理和会计师。

下载后,只需通过 GUI 双击即可执行脚本。

我的目标是让不精通技术的用户尽可能轻松地完成这项工作。

我的疑问是:

  • 下载后脚本将没有可执行位
  • 如果 perl 可执行文件不在默认位置,那么我应该写一些东西而不是#!/usr/bin/perl. 我应该在那里写什么?除了打开控制台并输入之外还有其他方法perl ./script.pl吗?

osx perl executable shell-script shebang

5
推荐指数
2
解决办法
778
查看次数

如何将 vsftpd 版本放入 shell 变量?

我想将 vsftpd 版本放入 shell 变量中。我可以轻松获得它的控制台:

# vsftpd -version
vsftpd: version 2.2.2
Run Code Online (Sandbox Code Playgroud)

我也可以将很多其他信息放入变量中:

# i=`bash --version 2>&1 | head -n1`; echo "=$i=";
=GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)=
Run Code Online (Sandbox Code Playgroud)

(请注意输出在“=”符号之间)。这种简单的方法不适用于 vsftpd:

# i=`vsftpd -version 2>&1`; echo "=$i=";
vsftpd: version 2.2.2
==
Run Code Online (Sandbox Code Playgroud)

请注意这里的 $i 是 ""。

我究竟做错了什么?

io-redirection shell-script stdout output vsftpd

4
推荐指数
1
解决办法
2万
查看次数

如何在'top'命令的输出中禁用颜色?

我正在尝试处理“顶级”输出以设置 CPU 性能数据。当我只是 grep 输出它是彩色的: 在此处输入图片说明 或者 在此处输入图片说明 数字是粗体的,它在输出中添加了很多不必要的数据: 在此处输入图片说明

我试图去除颜色代码答案,但它不起作用。为了性能,我想在该问题中避免其他更复杂的答案。

我试图通过切换术语模式禁用颜色,但没有运气: 在此处输入图片说明

那么如何禁用颜色输出呢?

PS:我找到了如何获取数据:我只能使用数字 awk 然后它可以工作,但仍然想知道是否有任何方法可以在此处禁用颜色。

linux colors top terminal

4
推荐指数
1
解决办法
3579
查看次数

如何正确运行 setuid 任务?

假设有一个 php 网站,我想根据站点代码执行在防火墙级别阻止一个 ip。该站点在非 root 用户下运行。

我打算将 IP 从站点代码传递给一个脚本(仅可写到 root),例如

#!/bin/bash
function validate_ip()
{ ... code here ...}
if validate_ip $1; then 
    /usr/sbin/iptables -I INPUT -s $1 -j DROP
    echo 'blocked'; 
else 
    echo 'bad IP $1'; 
fi
Run Code Online (Sandbox Code Playgroud)

使用 suid 位。我想添加额外的 IP 验证以避免 XSS 和其他坏事(如果你愿意,可以考虑它的偏执),所以不想让网站直接调用 iptables。

该脚本不起作用,can't initialize iptables table 'filter': Permission denied (you must be root)因为bash 丢弃了 suid 位

有解决方法:在 sudo 中允许iptables,但我认为它不安全。我没有时间/不可能开发/购买可以完成任务的二进制文件。有人建议围绕脚本进行二进制包装,但我犹豫了,也许有更好的方法?

所以,问题是:如何允许非 root 应用程序以安全的方式阻止 iptables 防火墙中的 ip?

setuid permissions iptables

3
推荐指数
1
解决办法
325
查看次数

有多少中断和上下文切换对服务器有益?

Munin有图表“系统上的中断和上下文切换”。

就这是一个监控工具而言,我认为这些值对服务器性能很重要。

所以,问题是:我如何知道每个特定服务器的值是正常还是过高?

我假设任何 Linux 至少

performance monitoring

0
推荐指数
1
解决办法
608
查看次数

新行和 bash 变量

我有一个文本文件(或管道输出,在这里无关紧要)

memcached.uptime 1061374
memcached.curr_connections 480
memcached.cmd_get 478962548
memcached.cmd_set 17641364
memcached.cmd_flush 0
Run Code Online (Sandbox Code Playgroud)

如果我使用命令,cat test.txt | while read i; do echo $i; done它会产生非常预期的输出:

memcached.uptime 1061374
memcached.curr_connections 480
memcached.cmd_get 478962548
etc
Run Code Online (Sandbox Code Playgroud)

但是如果我循环使用,for i in $(cat test.txt); do echo $i; done我会看到不同的东西:

memcached.uptime
1061374
memcached.curr_connections
480
memcached.cmd_get
478962548
etc
Run Code Online (Sandbox Code Playgroud)

问题是:为什么???

bash newlines variable

0
推荐指数
1
解决办法
353
查看次数