标签: shell-scripting

验证 Apache(或任何帐户)是否具有导航到目录的适当权限的脚本

似乎 Apache 至少需要对路径的所有子目录具有读取和执行权限才能为目录中的文件提供服务。

有没有人有可以验证这一点的脚本或单线?

我在想一个bash脚本,su - apache然后会尝试导航到路径中的每个目录。我会尝试一些东西,如果我想出一些有用的东西,我会发布。

linux permissions bash shell-scripting

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

端口 80 到 443 的全局重定向

我想设置我的 linux box,以便任何访问端口 80 的东西都会被告知询问 443 端口。我希望它与域、IP 或任何可能存在的特定细节无关。如果可以请求端口 80,则应该告诉它不。我们在 443 上这样做。

我将在 443 上使用 Apache,因此可以很容易地将其绑定到 80,但不要认为解决方案必须在端口 80 上包含 Apache。

需要明确的是,我正在寻找一种无需更改虚拟主机的解决方案。我了解可以通过继承传递的全局重定向。这需要更改 vhost。我正在寻找更全面、更不容易出现“哎呀,我忘了那条线,现在端口 80 暴露了我的未加密数据”的东西。

你会如何着手解决这个问题?iptables、apache、带有 netcat 的自定义 shell 脚本和一些使其成为 SSL 的魔法?

https redirect shell-scripting apache-2.2

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

无法让 Exchange PowerShell 脚本在计划任务下运行

我有一个 PowerShell 脚本,当直接输入到 PowerShell 中时它可以工作。PowerShell 程序使用快捷方式运行:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -PSConsoleFile "C:\Program Files\Microsoft\Exchange Server\bin\exshell.psc1" -noexit -command ". 'C:\Program Files\Microsoft\Exchange Server\bin\Exchange.ps1'"
Run Code Online (Sandbox Code Playgroud)

我在 Windows 任务计划程序中尝试了大约 10 种不同的方法来首先打开上面的快捷方式,然后运行我保存的脚本文件,但它不起作用。它挂在“正在运行”上。

该脚本位于此处:

Z:\Exchange PowerShell\MailboxesApproachingOverQuota.ps1
Run Code Online (Sandbox Code Playgroud)

请注意,可以将脚本内容复制并粘贴到上面的 PowerShell 快捷方式中,它运行得非常好,并将输出通过电子邮件发送给我。

请注意,我使用的 PowerShell 实例来自上面显示的快捷方式,其中已经包含参数 - 因此我很难过在 Task Scheduler 中放置什么内容。

请问有什么帮助吗?

谢谢 :)


编辑当我直接在 CMD 中使用以下内容时:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -PSConsoleFile "C:\Program Files\Microsoft\Exchange Server\bin\exshell.psc1" -noexit -command ". 'C:\Program Files\Microsoft\Exchange Server\bin\Exchange.ps1'; &'Z:\Exchange Powershell\MailboxesApproachingOverQuota.ps1'"
Run Code Online (Sandbox Code Playgroud)

我得到:http : //tinypic.com/r/n1fkmg/8

当我使用以下内容时:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -PSConsoleFile "C:\Program Files\Microsoft\Exchange Server\bin\exshell.psc1" -noexit -command ". 'C:\Program Files\Microsoft\Exchange Server\bin\Exchange.ps1'; &'Z:\Exchange Powershell\MailboxesApproachingOverQuota.ps1'"
Run Code Online (Sandbox Code Playgroud)

我得到:http : //tinypic.com/r/5bbac9/8 …

powershell exchange-2007 task-scheduler windows-sbs-2008 shell-scripting

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

我怎样才能使这个脚本更好?

我想知道除了将每一行附加到文件之外,是否还有更好的方法来创建文件。我这样做是为了保持可读性,但是,没有缩进。有没有办法创建一个文件并一次输入多行?

if [ -d "/srv/www/$1" ]; then
 echo "Domain name already exists!"
else 
 mkdir -p /srv/www/$1/public_html; 
 mkdir -p /srv/www/$1/logs; 
 echo "<VirtualHost>" > /etc/apache2/sites-available/$1
    echo "ServerAdmin support@$1" >> /etc/apache2/sites-available/$1
    echo "ServerName $1" >> /etc/apache2/sites-available/$1
    echo "ServerAlias www.$1" >> /etc/apache2/sites-available/$1
    echo "DocumentRoot /srv/www/$1/public_html/" >> /etc/apache2/sites-available/$1
    echo "ErrorLog /srv/www/$1/logs/error.log" >> /etc/apache2/sites-available/$1
    echo "CustomLog /srv/www/$1/logs/access.log combined" >> /etc/apache2/sites-available/$1
 echo "</VirtualHost>" >> /etc/apache2/sites-available/$1
 a2ensite $1
Run Code Online (Sandbox Code Playgroud)

linux shell-scripting

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

递归删除带有详细输出的空文件夹

这应该相当简单,但我不确定我错过了什么。

我想递归删除空目录,并获得正在删除内容的输出,此命令肯定有效,但我无法详细打印 -excec 的操作。

while [ -n "$(find . -depth -type d -empty -exec rm -v -rf {} +)" ]; do :; done

通过递归我的意思是,我想保持删除空文件夹,直到有没有其他的空文件夹。

$ tree .
.
??? empty
?   ??? empty
?       ??? empty
??? non-emty
    ??? ko
Run Code Online (Sandbox Code Playgroud)

此项只会删除树中的一个空文件夹

$ find . -depth -type d -empty -exec rmdir -v {} +
rmdir: removing directory, `./empty/empty'
Run Code Online (Sandbox Code Playgroud)

scripting bash find shell-scripting

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

linux + 从文件中删除重复的IP

从文件中删除重复 IP 的最佳方法是什么

我使用命令:

        sort file | uniq
Run Code Online (Sandbox Code Playgroud)

但我不确定这是否是最好的方法,也许我错过了什么?

备注:我的文件包含两个字段

文件示例

 172.17.200.1 3.3.3.3
 172.17.200.1 3.3.3.3
 255.255.255.0 255.255.255.111
 255.255.255.0 255.255.255.111
 172.17.200.2 3.3.3.4
 255.255.255.0 255.255.255.111
 172.17.200.3 3.3.3.5
 255.255.255.0 255.255.255.111
 172.17.200.4 3.3.3.7
 255.255.255.0 255.255.255.111
 172.17.200.5 3.3.3.8
 255.255.255.0 255.255.255.111
 255.255.255.0 255.255.255.111
 172.17.200.1 3.3.3.3
 255.255.255.0 255.255.255.111
 172.17.200.2 3.3.3.4
 255.255.255.0 255.255.255.111
 172.17.200.3 3.3.3.5
 255.255.255.0 255.255.255.111
 172.17.200.4 3.3.3.7
 255.255.255.0 255.255.255.111
 172.17.200.5 3.3.3.8
 255.255.255.0 255.255.255.111
 255.255.255.0 255.255.255.111
Run Code Online (Sandbox Code Playgroud)

linux solaris ksh sort shell-scripting

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

重定向命令与输出 shell 一起执行

我想将与输出一起执行的命令重定向到一个文件。

例如:#ls >ls_out.txt

ls_out.txt 应该是这样的:


ls

文件 1 文件 2


谢谢!

linux shell unix-shell shell-scripting

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

为什么我的 shell 命令不起作用?

我有一个我正在处理的 shell 脚本,它使用 pssh 来获取远程服务器上用户的用户 ID:

for USER in $(cat users.txt); do
    runuser -l mike -c 'pssh -H server.mike.com -o /home/mike/output id -u $USER'
    cat /home/mike/output/server.mike.com
Run Code Online (Sandbox Code Playgroud)

文件 users.txt 包含一行

mikeghen
Run Code Online (Sandbox Code Playgroud)

当我运行我的脚本时,我收到一个错误:

[1] 14:23:15 [FAILURE] server.mike.com Exited with error code 1\
Run Code Online (Sandbox Code Playgroud)

但是,当我运行命令时:

runuser -l mike -c 'pssh -H server.mike.com -o /home/mike/output id -u mikeghen'
Run Code Online (Sandbox Code Playgroud)

我没有得到错误:

[1] 13:11:53 [SUCCESS] server.mike.com
Run Code Online (Sandbox Code Playgroud)

我觉得这与我之前问过的一个问题有关,为什么在 pssh 期间权限被拒绝?,所以我尝试将我的命令用引号括起来,但没有运气。有什么建议?

linux ssh shell-scripting

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

无法让 cron 输出 GUI 消息/如何让用户知道正在执行 cron

我需要在 Ubuntu 18.04 上通过 cron 运行一个脚本,myscript.sh除其他外,我希望在运行时向用户显示一条消息,以便他知道正在运行 cron(也许还有其他方法这样做不涉及任何与 GUI 相关的事情;如果是,请告诉我)。

但是由于 cron 在它自己的最小环境中运行,我无法弄清楚如何做到这一点。

我尝试了各种方法,最有希望的似乎是明确分配 DISPLAY 并启动一个终端,分配给它的这个显示并在该终端内运行一个显示消息的命令,这意味着myscript.sH我有两行

export DISPLAY=:0 XAUTHORITY=~/.Xauthority 
gnome-terminal --display=:0.0 -- bash -c "xmessage -center -timeout 10 'ATTENTION. CRON IS RUN';exec bash"
Run Code Online (Sandbox Code Playgroud)

当我在我自己的终端中运行时,不涉及 cron,gnome-terminal --display=:0.0 -- bash -c "xmessage -center -timeout 10 'ATTENTION. CRON IS RUN';exec bash"这是有效的(当然,在我的终端中,我不需要启动另一个终端并且可以简单地运行xmessage -center -timeout 10 'ATTENTION. CRON IS RUN'......)。

但是 cron 抱怨以下消息(我将 cron 执行的输出重定向到一个文件,以便我可以看到出了什么问题):

No protocol specified
Unable to init server: Could not connect: Connection refused
Run Code Online (Sandbox Code Playgroud)

如果我不是放置 …

graphical-user-interface cron shell-scripting

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

删除除每天最新的所有文件

我有定期更新的转储目录。

我想删除所有超过一周的文件。

Bash 是首选,但也欢迎其他解决方案。

linux bash shell-scripting

-1
推荐指数
1
解决办法
2356
查看次数

尝试执行此 shell 脚本但收到此错误

试图执行这个 shell 脚本。

#!/bin/bash
# Proper header for a Bash script.

# Cleanup, version 2

# Run as root, of course.
# Insert code here to print error message and exit if not root.

LOG_DIR=/var/log
# Variables are better than hard-coded values.
cd $LOG_DIR

cat /dev/null > messages
cat /dev/null > wtmp


echo "Logs cleaned up."

exit #  The right and proper method of "exiting" from a script.
     #  A bare "exit" (no parameter) returns the exit status
     #+ of …
Run Code Online (Sandbox Code Playgroud)

shell shell-scripting

-1
推荐指数
1
解决办法
43
查看次数