LINUX.ORG.RU

154
Всего сообщений: 2719

Разыскивается файловый менеджер с веб-интерфейсом

Подскажите файловый менеджер на php/bash/etc вроде этого.

С веб-интерфейсом, нетребовательный к ресурсам (если такие вообще остались в природе). Суть в том, что этот ФМ желательно интегрировать с приложением (панель управления сервисами), где фронтенд на php/html/js, а бэкенд куча старых bash-портянок.

Если вы догадались о чем я куда придется встраивать, то вы меня поняли ;-)

Есть такое?

 , , ,

Twissel ()

Подскажите как удалить символ

Имеется одинаковые блоки

"Moto count":0
},
]
}
"Moto count":0
},
]
}
"Moto count":0
},
]
}
"Moto count":0
},
]
}
необходимо в последнем блоке удалять запятую после кавычки должно выйти вот так
"Moto count":0
},
]
}
"Moto count":0
},
]
}
"Moto count":0
},
]
}
"Moto count":0
}
]
}

 

vbox ()

bash: pulseaudio --check

Всем привет.

Кто-то может мне объяснить, почему не отрабатывает однострочник для проверки запущенного pulseaudio?

Вот, что происходит:

int@localhost ~ $ pulseaudio --check 
int@localhost ~ $ echo $?
1
int@localhost ~ $ [ $(pulseaudio --check) ] && echo "yes" || echo "no"
no
Ок, допустим. Дальше запускаю pulseaudio:
int@localhost ~ $ pulseaudio -D
int@localhost ~ $ pulseaudio --check 
int@localhost ~ $ echo $?
0
int@localhost ~ $ [ $(pulseaudio --check) ] && echo "yes" || echo "no"
no

В мане говорится следующее:

--check
              Return 0 as return code when the PulseAudio daemon is already running for the calling user, or non-zero otherwise. Produces no output on the console except for errors to stderr.

С grep'ом работает:

int@localhost ~ $ echo 'hello' >> /tmp/foo
int@localhost ~ $ [ $(grep 'hello' /tmp/foo) ] && echo "yes" || echo "no"
yes
int@localhost ~ $ [ $(grep 'olleh' /tmp/foo) ] && echo "yes" || echo "no"
no

 , ,

ubik ()

Команда 404

$ j
-bash: j: command not found

А хочется чтобы все команды которые не нашла консоль она передавал их указанному bash скрипту в качестве параметров.

Разумеется только в коносоле, но не при интерпритации скриптов. Возможно?

 , , , ,

Suntechnic ()

bash как добавить ковычки

Добрый день! подскажите как добавить ковычки в каждом слове, и запятые но в последнем слове запятая не нужна


сейчас: text1 text2 text3 text4 text5
нужно:  "text1", "text2", "text3", "text4", "text5"

 

vbox ()

Получить exit code, с которым завершилась программа в середине скрипта

Есть такой скрипт:

if ! myprgm; then
  echo "fail"
  exit 1
fi

Я хочу сохранять то, что выводит myprgm в stdout в файл stdout.txt и для каждой строчки печатать в stdout «o», а вывод в stderr сохранять в stderr.txt и и для каждой строчки печатать в stdout «x». Вот что у меня получилось:

mkfifo out
mkfifo err

process_out() {
  while read line; do
    echo "${line}" >> stdout.txt
    /bin/echo -n "o"
  done < out
}

process_err() {
  while read line; do
    echo "${line}" >> stderr.txt
    /bin/echo -n "x"
  done < err
}

if ! myprgm > out 2> err & process_out & process_err; then
  echo "fail"
  exit 1
fi
Но это не будет работать, потому что $?, от которого зависит срабатывание if будет принадлежать функции process_err, а не myprgm.

Как можно грамотно переписать этот говнокод? Хотелось бы, чтобы работало в POSIX-совместимом шелле.

 , , ,

CYB3R ()

Вывод столбцов файла в переменные

#!/bin/bash
cat list_t5.txt | awk '{ d=$2;l=$1;$key=$3;print d,k,l }' | while read d l key
do
echo "$key"
echo "$d"
echo "$l"
done

Последний третий столбец(key) не выводится, что не так? файл a \t b \t c

 ,

Diplomatq ()

Ошибка при запуске установленных пакетов (Termux).

Возникает ошибка при вводе большинства команд под termux.

$ apt upgrade

Reading package lists... Done

Building dependency tree Reading state information... Done

Calculating upgrade... Done

The following package was automatically installed and is no longer required: ndk-stl

Use 'apt autoremove' to remove it.

0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

$ su

gt510lte:/data/data/com.termux/files/home # apt upgrade

sush: apt: not found

 , ,

amiroot ()

Подскажите по sshpass

Задача запускать локальный фаил на сервере через sshpass

так работает

sshpass -p $pass ssh -o StrictHostKeyChecking=no $login@ip 'bash -s' < script.sh 
необходимо запускать фаил script.sh с рут правами пробовал через EOF передать рут пасс, не получилось
sshpass -p $pass ssh -o StrictHostKeyChecking=no $login@ip 'bash -s' < script.sh << "EOF"
    echo $pass &> /dev/null
EOF

 ,

vbox ()

РЕШЕНО Не работает скрипт, сравнивающий значения

Есть скрипт на bash, который должен сравнивать значения получаемые с сайта, вот собственно он сам:

example=$(cat ~/example) 
curl somesite.com > ~/match
match=$(cat ~/match)

if [[ "$example" == "$match" ]]
then 
echo match!
else
echo not match...
fi
В файле example лежит тоже самое значение что и в файле match. Почему-то сначала все работает, показывает что значения равны, но если запустить скрипт еще раз - не совподают. Сам проверил - все одинаково, ЧЯДНТ?

Решение: использовать diff -w

 , ,

RedMaun ()

РЕШЕНО Перенаправление вывода На в ввод

Салют ребятА ! Поскажите пж. возник вопрос но гугл к сожалению помочь не смог. вообщем в чём суть вопроса. Скачаваю скрипт с гитхаба захожу в папку с помощью команды CD, даю права на выполнение файлу установки и запускаю установщик. но ! нужно выполнить это в одну команду без постоянного ввода каждой по отдельности.

git clone " URL "; cd ' PATH NAME '; ls | grep install | «тут нужно перенапривить вывод на ввод и собственно автоматически ввести подставить впереди chmod +x 'тут сам install файл'»; ls | grep install | sudo bash 'снова перенаправленный вывод на ввод и автоматически enter'

помогите уважаемые олдфаги) и не судите строго. Это мой первый пост)

 , , ,

stokman ()

Почему содержимое командной строки - не файл?

Говорили, что в линуксе всё есть файл. А тут раз и такая неоднородность - параметры командной строки помещаются куда-то в адресное пространство программы.

Сделали бы как один из стандартных файлов и всё было бы единообразно.

А теперь как с этим жить?

 

Einstok_Fair ()

systemd и system-sleep останавливаются скрипты

Создал скрипт для очистки swap после выхода из гибернации.

d=`date`
echo $d >> /home/user/alldone
echo "--------" >> /home/user/alldone
a=`cat /proc/meminfo | grep SwapFree | sed 's/[a-zA-Z: ]*//g'`
while [ "$a" != "0" ]
do
nice -n -20 swapoff -a
sleep 5
a=`cat /proc/meminfo | grep SwapFree | sed 's/[a-zA-Z: ]*//g'`
done
sleep 3
swapon -a
d=`date`
echo $d >> /home/user/alldone
echo "------------------------" >> /home/user/alldone
Но скрипт не успевает отработать т.к. после выхода, скрипт (любой, делал скрипты с выводом чисел в файл каждую секунду) через 80-90 секунд останавливается. Подскажите где искать или как увеличить этот таймер. Система debian 9 ядро 4.17.0-0

 , , ,

Im_not_robot ()

Ищу легкий способ запаковать ZIP-архив в ZIP-архив

На самом деле, это реальная рабочая задача: запаковать DOCX (который, как мы помним, есть солянка из XML внутри ZIP) в ZIP. Так просит заказчик. У него там бизнес-процессы и всё такое.

Использую консольную утилиту zip v 3.0. Если файлов 2 или больше, пусть даже все - в DOCX, она их послушно сжимает.

Но если файл один, утилита ругается: nothing to do! Создать каталог и положить DOCX в него - не помогает.

Сообразил такой костыль:

touch dummy
zip -j archive.zip dummy document.docx
zip archive.zip -d dummy

Может быть, кто-то знает более прямой путь, нежели городить очередную функцию в .bashrc? man zip читал.

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

 , , ,

Bagrov ()

Зачем тут плюс?

Скрипт взят с Mutt - ArchWiki. Подскажите, пожалуйста, зачем во второй снизу строчке в конце строки плюс?

#!/bin/sh

## In KB.
CACHE_LIMIT=51200

cd "$1" 2>/dev/null
[ $? -ne 0 ] && exit

[ $(du -s . | cut -f1 -d'	') -lt $CACHE_LIMIT ] && exit
while IFS= read -r i; do
	rm "$i"
	[ $(du -s . | cut -f1 -d'	') -lt $CACHE_LIMIT ] && exit
done <<EOF
$(find . -type f -exec ls -rt1 {} +)
EOF

 

Borifed ()

Bash grep и регулярные выражение

Имеются список ип адресов в таком формате

10.232.187.4    8c16.45ff.092c          Feb 28 2019 08:31 AM    Automatic  Active     
10.232.187.5    8c16.45ff.08a8          Feb 28 2019 08:47 AM    Automatic  Active     
10.232.187.6    8c16.45ff.06fc          Feb 28 2019 02:34 PM    Automatic  Active     
10.232.187.7    4ced.fb46.253f          Feb 28 2019 01:38 PM    Automatic  Active     
10.232.187.8    fcaa.1458.afe9          Feb 28 2019 07:56 AM    Automatic  Active     
10.232.187.9    4ced.fbc0.9578          Feb 28 2019 07:56 AM    Automatic  Active     
10.232.187.10   5404.a6cb.db6e          Feb 28 2019 08:56 AM    Automatic  Active     
10.232.187.11   fcaa.1484.bf49          Feb 28 2019 04:59 PM    Automatic  Active     
10.232.187.12   94de.8010.ac26          Feb 28 2019 12:06 PM    Automatic  Active     
10.232.187.14   8c16.45ff.0b7d          Feb 28 2019 08:31 AM    Automatic  Active     
10.232.187.15   b06e.bf2f.5dc0          Feb 28 2019 09:00 AM    Automatic  Active     
10.232.187.16   5046.5da1.0838          Feb 28 2019 08:25 AM    Automatic  Active     
10.232.187.69   5410.ecaa.390e          Feb 28 2019 01:37 PM    Automatic  Active     
10.232.187.70   5410.ecaa.617e          Feb 28 2019 01:37 PM    Automatic  Active     
10.232.187.71   5410.ecfe.896d          Feb 28 2019 01:37 PM    Automatic  Active     
10.232.187.72   5410.ecfe.e6ca          Feb 28 2019 01:37 PM    Automatic  Active     
10.232.187.74   5410.ecfd.f521          Feb 28 2019 01:37 PM    Automatic  Active     
10.232.187.99   0194.fb29.23df.e2       Feb 28 2019 04:25 PM    Automatic  Active     
10.232.187.100  0194.fb29.23de.c5       Feb 28 2019 05:03 PM    Automatic  Active     
10.232.187.101  0100.2368.ed39.e9       Feb 28 2019 05:04 PM    Automatic  Active     
10.232.187.102  0140.83de.8a14.a0       Feb 28 2019 04:47 PM    Automatic  Active     
10.232.187.103  0100.2368.ce9e.cb       Feb 28 2019 05:03 PM    Automatic  Active     
10.232.187.104  0100.2368.ceb9.af       Feb 28 2019 04:56 PM    Automatic  Active     
10.232.187.105  0100.2368.c9e6.c9       Feb 28 2019 05:01 PM    Automatic  Active     
10.232.187.106  0100.2368.cd43.0e       Feb 26 2019 03:07 PM    Automatic  Active     
10.232.187.194  01b4.a382.7492.8a       Feb 28 2019 08:14 AM    Automatic  Active 


Необходимо например через grep и регулярные вырождение выводить только те ип, которые заканчиваются в диапазоне 2-62
например Подходят
10.232.187.12
10.232.187.15
10.232.187.19
10.232.187.60
10.232.187.62

Не подходят
10.232.187.63
10.232.187.69
10.232.187.105
10.232.187.101

 

vbox ()

Восклицательный знак в скрипте с 'at'

Приветствую. Есть найденный в Сети и как надо работающий bash-скрипт с 'at' (время произвольное):

at 1400 << !
command...
!
Но не понимаю значения '!' в данном случае. Служебный символ для интерактивного сценария? Или что?

Если убрать начальный '!' - не работает, если завершающий - работает, но выдает предупреждение:

here-document в строке разделяется концом файла (нужно «!»)

 , ,

mexx ()

Bash выполнять условия

Задача брать ip из файла, и пробовать соединится с хостом

cat text.txt |  while read ipoutput
do
    status=$(sshpass -p $pass ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 $user@$ipoutput echo ok)
      if [[ $status == ok ]] ; then
  	echo
        {
          echo $ipoutput
        } >> ubuntu.txt
		elif [[ $status == "Permission denied"* ]] ; then
  	echo
        {
          echo $ipoutput
        } >> mint.txt
    fi 
done

Проблема в том, что если соединение удалось то цикл завершает работу и не проверяет остальные ип

 

vbox ()

Bash проверка ip по циклу

Имеется файл listip.txt со список ип адресов

192.168.0.4
192.168.0.5
192.168.0.6
192.168.0.7
192.168.0.9

как на баш запустить пинг, и записывать пк которые онлайн в фаил online.txt а те которые офф в offline.txt

 

vbox ()

Bash. Изменить значение поля в файле

Всем привет. Я новичок в программировании на Bash Помогите пожалуйста написать функцию, которая принимает в качестве параметра имя поля, значение поля и имя файла. Функция должна находить в файле параметр с заданным именем и менять значение этого параметра. Пример файла:

Key1 Value1
#Key2 Value2
Key3 Value3

Например я хочу редактировать /etc/ssh/sshd_config поле Port и изменить значение с 22 на другое. При этом эта строка изначально закомментирована. Код для раскомментирования я написал, а вот с заменой у меня затык. Вот что у меня есть

#!/bin/bash

#comment string
comment(){
	sed -i "/^$1/ c# $1" $2
}

#uncomment string
uncomment(){
	
	if str1=$(awk '/^# *'"$1"' +/ {gsub(/^#|^# +/,""); print}' $2)
	then
		IFS=$'\n' read -d '' -r -a lines <<< "$str1"
		for x in "${lines[@]}"	
		do
			sed -i "s/^# *$x/$x/" $2
		done
	fi
}

#get field value
get_field_value(){
	FIELD_VALUE=$(awk '/^# *'"$1"' +/ {gsub(/^#|^# +/,""); print $2;exit;}' $2)
}

#set field
set_field_value(){
	get_field_value $1 $2
	awk -v field_name="$1" -v field_value="$FILED_VALUE" -v change_to="$3" '{if($1==field_name || $2==field_name) gsub(/.*field_value.*/, "change_to"); print}' $2
}

#replace field
replace_field(){
	sed "s/$1/$2/g"
}

set_field_value test test 777

 

TmYAG ()