Что не так в скрипте по сбору информации о системе Ubnutu?

Есть скрипт по сбору информации о системе взятый из сети.
#!/bin/bash
 
telescripts_path=/root/
 
info_web="Web-servers
-------------
$(service apache2 status)
$(service nginx status)
 
"
 
info_mysql="MySQL
-------------
$(mysqladmin ping)
$(mysqladmin status)
 
"
 
info_cpu="CPU
-------------
top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1" of 100 percents"}'
 
"
 
info_ram="RAM
-------------
free: $(free -m | grep Mem | awk '{print $4}') MB of $(free -m | grep Mem | awk '{print $2}') MB total
 
"
 
info_space="HDD
-------------
$(df -h --output=source,size,used,avail | head -n2)
"
 
text=$(printf "$info_web$info_mysql$info_cpu$info_ram$info_space")
printf '%s\n' "$text" > ${telescripts_path}/status.txt

но при запуске в строке сбора данных о процессоре происходит ошибка:
строка 21: ошибка синтаксиса около неожиданной лексемы `('

Так и не смог разобраться что не так, по этому что бы проверить остальную часть скрипта закомментировал не работающую часть. Скрипт запустился но данные о MySQL и RAM пришли пустыми.
MySQL
-------------
RAM
-------------
free: MB of MB total

Что неверно в скрипте?
  • Вопрос задан
  • 526 просмотров
Решения вопроса 1
sim3x
@sim3x
$( top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1" of 100 percents"}' )


проверить есть ли бинарник "в системе" точнее в PATH можно так

if hash mysql 2>/dev/null; then
   echo mysql exists
fi


Последние строчки можно написать проще

cat << EOF > /path/to/file

$info_web

$info_mysql

$info_cpu

$info_ram

$info_space

EOF
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@abcd0x00
но при запуске в строке сбора данных о процессоре происходит ошибка:

Эта ошибка происходит из-за выпадения скобок из двойных кавычек.
Аналогичный вариант:
[guest@localhost ~]$ s="abc"def(g)"hij"
bash: syntax error near unexpected token `('
[guest@localhost ~]$


Исправить можешь так:
[guest@localhost ~]$ s="abc'def(g)'hij"
[guest@localhost ~]$
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы