Я настраиваю bash / html CGI, который позволит мне генерировать графики с помощью GnuPlot.
Для этого у меня есть две CGI-страницы в bash / html:
Первая страница содержит простую кнопку «генерировать», которая открывает новую страницу и запускает мой скрипт gnuplot, и список, которыйранее были заполнены названиями разных кластеров.
Вторая страница, открываемая с помощью кнопки «Сгенерировать», отображает мой график.
Мой вопрос: как мне поместить команды gnuplot на мою CGI-страницу в bash / html?
Вот код моей первой страницы, который позволяет мне выбрать интересующий меня кластер:
#!/bin/bash
echo "Content-type: text/html"
echo ""
echo '
<html>
<head>
<meta http-equiv="Content-Type" content="test/html"; charset=UTF-8">
<title> CLUSTER GRAPH </title>
<h1> Cluster Graph <font size=3> <a href="Index.sh">[ Index ]</a> </font> </h1>
<hr size="4" color="blue">
</head>
<body>
<p> Choose a Cluster and press the button to generate the graph ! </p>'
Cluster_Name=$(cat ClusterFullList.csv | awk '{print $3}' | sort |uniq)
echo "<form action="Script_test.sh" method="post">"
echo "<select name="CLUSTER">"
echo "$Cluster_Name" | while read CLUSTER; do
echo " <option value="$CLUSTER">$CLUSTER</option>"
done
echo "</select>"
echo"<br><br>"
echo "<input type="submit" value="Generate">"
echo "</form>"
echo '
</body>
</html>
'
Вот код моей второй страницы, на которой должен появиться мой график:
#!/bin/bash
echo "Content-type: text/html"
echo ""
echo "
CLUSTER GRAPH
Cluster Graph [ Index ]
"
read a
test=`echo $a | cut -d'=' -f2`
echo "$test"
echo " f(w) = (strlen(w) > 10 ? word(w, 1) . "\n" . word(w, 2) : w) " >> gnuplot_script_test.txt
echo " set title $test " >> gnuplot_script_test.txt
echo " set terminal png truecolor size 960, 720 " >> gnuplot_script_test.txt
echo ' set output "$test.png" ' >> gnuplot_script_test.txt
echo " set bmargin at screen 0.1 " >> gnuplot_script_test.txt
echo " set key top center " >> gnuplot_script_test.txt
echo " set grid " >> gnuplot_script_test.txt
echo " set style data histograms " >> gnuplot_script_test.txt
echo " set style fill solid 1.00 border -1 " >> gnuplot_script_test.txt
echo " set boxwidth 0.7 relative " >> gnuplot_script_test.txt
echo " set yrange [0:] " >> gnuplot_script_test.txt
echo " set format y "%g%%" " >> gnuplot_script_test.txt
echo " set datafile separator "," " >> gnuplot_script_test.txt
echo ' plot "/var/www/cgi-bin/CLUSTER_1.txt" using 2:xtic(f(stringcolumn(1))) title " CPU consumption (%) ", '' using 3 title " RAM consumption (%)", '' using 0:($2+1):(sprintf("%g%%",$2)) with labels notitle, '' using 0:($3+1):(sprintf(" %g%%",$3)) with labels notitle ' >> gnuplot_script_test.txt
gnuplot gnuplot_script_test.txt
rm gnuoplot_script_test.txt
echo "
"
Идея:
Команды:
read a
test=`echo $a | cut -d'=' -f2`
echo "$test"
Позвольте мне получить строку запросаэто имя интересующего меня кластера (имя кластера, которое находится в списке на моей первой странице)
Я выполняю команды gnuplots и отправляю их каждый раз в файле "gnuplot_script_test.txt",затем я выполняю его с помощью команды:
gnuplot gnuplot_script_test.txt
Затем текстовый файл удаляет себя с помощью команды:
rm gnuplot_script_test.txt
Я хотел бы убедиться, что имя кластера я получаючерез строку запроса я могу поместить ее в свои команды gnuplot. Для этого я помещаю свою переменную "$ test" (которая содержит имя моего кластера) в строки:
echo" set title "$test""
имя моего кластера в моем заголовке
echo ' set output "$test.png" '
Чтобы дать моему png имямоего кластера
Но, когда я выбираю свой кластер на первой странице и нажимаю кнопку «Создать», имя моего кластера хорошо отображается на моей второй странице, но изображение не генерируется ...
Можете ли вы сказать мне, почему?
Спасибо!