создание списка каталогов в качестве индексной страницы веб-сервера в Linux - PullRequest
1 голос
/ 06 ноября 2011

Я использую

python -m SimpleHTTPServer 8080

чтобы запустить веб-сервер из каталога linux. Я пытаюсь написать сценарий оболочки, который генерирует страницу index.html, содержащую следующую информацию: Имя файла (в виде гиперссылки), Размер файла, Дата последнего изменения. Так что на самом деле пользовательский список каталогов.

Вот скрипт, который в настоящее время получает правильную информацию, но отображает все это в одной строке и не содержит гиперссылки на имя файла. Кто-нибудь может направить меня в правильном направлении?

    TITLE="Latest Logs"
    echo "<html>" > index.html
    echo "<title>$TITLE</title>" >> index.html
    echo "<body>" >> index.html
    echo "<h1>$TITLE</h1>" >> index.html
    ls -ctgGh | awk '{print $3 " " $4 " " $5 " " $6 " " $7}' \
    | grep -v index.html \
    | sed 's/[^0-9\s]+[.][^0-9\s]+/<a href="&">&<\/a><br\/>/g' \
    >> index.html
    echo "</body></html>" >> index.html

Итак, что я собираю в sed:

374, ноябрь 6,04: 03, generate.sh
7,5 млн., Ноябрь 6,04: 00, Admin-server.log
46M, ноябрь 6,03: 48, run1.log
528K, 4 ноября, 15:03, build.log

и я хочу получить:

375,Nov 6,04:14,<a href=generate.sh>generate.sh</a>
7.5M,Nov 6,04:09,<a href=Admin-Server.log>Admin-Server.log</a>
46M,Nov 6,03:48,<a href=run1.log>run1.log</a>
528K,Nov 4,15:03,<a href=build.log>build.log</a>

Ответы [ 3 ]

3 голосов
/ 06 ноября 2011

Я думаю, что ваше первое изменение не должно быть жестко закодировано в файле с именем выходного файла. Просто выводите нормально, на стандартный вывод, и когда вы вызываете скрипт, используйте перенаправление.

Например, ваша линия

echo "<html>" > index.html

должно быть просто

echo "<html>"

но когда вы вызываете скрипт, назовите его так:

my-script > index.html

и оболочка поместит вывод в правильный файл. (Это также полезно при тестировании, если вы хотите поместить вывод в тестовый файл.)

Предполагая, что вы используете sh, вы, вероятно, должны начать свой скрипт с "шебанга":

#!/bin/bash

в качестве первой строки. Подробнее см. Руководство по созданию сценариев Bash .

Как только вы это сделаете, вам не нужно

grep -v index.html

в вашем скрипте, потому что он не должен присутствовать в среде скрипта.

В вашем примере ввода у вас есть запятые, но в реальном мире они будут пробелами. Не проблема, просто исправление вопроса.

С awk вы, вероятно, можете разделять поля пробелами, используя запятые, а не " ". Это было бы более читабельным. И не используйте sed; это необязательно. Вы можете сделать все свои изменения с помощью awk:

awk '{print $3, $4, $5, $6, "<a href=" $7 ">" $7 "</a>"}'

должен сделать трюк.

Таким образом, движок в вашем скрипте будет состоять только из ls, переданного в awk, с echo, дающим выводу некоторую структуру; и когда вы используете скрипт, перенаправление позаботится о том, чтобы поместить его в файл.

0 голосов
/ 23 сентября 2015

Приведенный выше код генерирует файл index.html, который при вызове со страницы браузера отображает все файлы в каталоге. Вы можете заменить IP-адрес IP-адресом и портом вашего веб-сервера.

0 голосов
/ 22 сентября 2015
<code>#!/bin/sh
TITLE="Latest Logs"
echo "<html>" > index.html
echo "<title>$TITLE</title>" >> index.html
echo "<body>" >> index.html
echo "<PRE>" >> index.html
echo "<h1>$TITLE</h1>" >> index.html
ls -lrt | grep -v index.html | awk '{print $3, $4, $5, $6, "<a     href=http://10.77.28.119:9090/"$9 "<a>" $9 "</a>"}' >> index.html
echo "
">> index.html echo" ">> index.html
...