Articles of bash

“sudo su – ”和“sudo -i”有什么区别?

可能重复: sudo -i和sudo su有什么区别 – 我知道这两个命令都会导致获得root-shell。 但是有一些差异。 在一些服务器上,例如提示符是不同的: nomike@testerver:~> sudo -i root@testerver:~> logout nomike@testerver:~> sudo su – [root@testerver ~]# 所以我想“.bashrc”“.bash_profile”和“.profile”的处理方式有些不同。 有人调用一个loginshell而另一个不是?

从命令行而不是文件传递私钥到scp

有没有办法将私钥的内容直接传递给scp命令,而不必将其复制到文件并通过-i /path/to/key.pem选项指向它? 所以不要这样做: scp -i key.pem source target 我可以做类似以下的事情吗? scp -i '—–BEGIN RSA PRIVATE KEY—–\nMIIEowIBAAMIIEowIBAA…\n' source target 当然,我试过这个,它不起作用,但也许这可以通过一些BASHpipe道,输出redirect或类似的东西来实现。 我需要这样做的原因是因为我无法将密钥存储在文件系统中(这是一个非常漫长而无聊的故事),每次使用不同的密钥都需要执行该命令数百万次,所以额外的磁盘I / O将在我们的结果中显着。

你将如何通过脚本向smb.conf添加一个共享?

我想脚本添加一个共享到一个smb.conf文件。 我当前的脚本只是附加到文件的末尾,但这并不理想。 如果它不存在,我宁愿有一些将添加一个新的共享,并且如果它存在,则replace它。 我目前正在使用CentOS 7发行版来编写脚本,但是理想情况下,它们可能会在发行版中起作用,尽pipe这不是必需的。 另外,我正在使用bash来执行此操作,因为脚本是在其他程序包添加到系统之前运行的。 该脚本使用yum来安装samba包,然后应该configuration它并添加共享。

Bash脚本 – Munin插件不工作

我写了一个munin-plugin来计算lighttpd的http-statuscodes。 剧本: #!/bin/bash ###################################### # Munin-Script: Lighttpd-Statuscodes # ###################################### ##Config # path to lighttpd access.log LIGHTTPD_ACCESS_LOG_PATH="/var/log/lighttpd/access.log" # rows to parse in logfile (higher value incrase time to run plugin. if value to low you may get bad counting) LOG_ROWS="200000" # #munin case $1 in autoconf) # check config AVAILABLE=`ls $LIGHTTPD_ACCESS_LOG_PATH` if [ "$AVAILABLE" = "$LIGHTTPD_ACCESS_LOG_PATH" […]

iptables – 清除所有PREROUTING规则与特定的目标地址

我有一个脚本添加了iptable PREROUTING规则。 他们都有相同的地址。 当我运行这个: iptables –list PREROUTING -t nat 我看到这样的输出: DNAT tcp — anywhere 165.193.122.18 tcp dpt:https to:192.168.2.1:443 DNAT tcp — anywhere 63.135.91.11 tcp dpt:https to:192.168.2.1:443 DNAT tcp — anywhere 63.135.90.224 tcp dpt:https to:192.168.2.1:443 看来我应该可以通过编写像这样的命令来放弃所有这些规则… "drop all PREROUTING rules that go to 192.168.2.1:443" 所以,在看它的选项看起来像我需要使用-D选项。 但是我不知道这个原因。 🙁 所以,我可能需要查询现有的规则,grep将其限制为目标192.168.2.1:443,然后运行-D传递每个规则的rulenum。 我不知道该怎么做。 任何帮助,将不胜感激。 谢谢! EV

使用xargs时redirect到stdin而不是参数

例如,使用命令 cat foo.txt | xargs -I{} -n 1 -P 1 sh -c "echo {} | echo" foo.txt包含两行 foo bar 上述命令什么都不打印。

loginFreeBSD ssh时使用bash shell

我正在寻找一种方法来确保我的命令是由bash在一些使用csh作为默认shell的FreeBSD 11机器上执行的。 以下是我在Linux CentOS / Debian / MacOS X / pfSense 2.3(在FreeBSD 10.3上运行)甚至Windows 10 bash上运行的代码,但在FreeBSD 11上不起作用 cat "/some/filelist" | ssh -i "/home/user/.ssh/some_key" user@freebsd11 'bash -c "while read -r file; do stat -f \"%N;%c;%m\" \"\$file\"; done | sort"' 在FreeBSD 11上输出前面的命令似乎是一个csh错误信息 Unmatched ". 在检查运行哪个shell时,似乎csh运行。 以下返回'csh' ssh -i /home/user/.ssh/some_key user@freebsd11 'bash -c "echo $0"' 至于我的理解,BSD系统不允许更改shell,除非使用heredoc,但是我不能使用heredoc发送cat“/ some / filelist”。 […]

使用ulimit来限制脚本可以使用的内存量

我有一个Ubuntu系统,我有一个定期运行的脚本。 我需要限制这个脚本可以使用的最大内存量。 AFAIK ulimit是这样做的命令,但我不能得到它的工作。 例如,我有以下脚本: #! /bin/bash ulimit -m 1024 X="x" seq 100 | while read LINE ; do X="$X$X" done 这应该使$X变大,这个例子就是我想要限制的东西。 然而ulimit调用似乎不起作用。 我可以运行脚本OK,它不会死, top显示脚本得到大量的内存。 我究竟做错了什么? 我怎样才能强制这个脚本永远不会超过一定量的内存?

我的无头的Ubuntu服务器上的'nobody'用户是否可以访问shell?

我曾经在几个论坛上看过相互冲突的内容。 当我input以下行时: grep nobody /etc/passwd 我得到以下输出 nobody:x:65534:65534:nobody:/nonexistent:/bin/sh 应该没有人可以访问shell吗? 你能否限定你的答案? 谢谢

在远程Windows机器上执行Ubuntu上的Bash脚本?

我有一个Ubuntu 10.4机器上的bash脚本。 它是共享的,我可以从我的win7机器上使用\\LINUX-SERVER\bash_repo\make-live 但是,当我这样做,Windows试图打开它。 这不是我想要的。 我想告诉Ubuntu来执行它。 我实际上希望能够在窗口上创build一个GUI应用程序,用户点击一个button,它会告诉ubuntu机器上的bash脚本执行。 这有可能吗?