Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Расшифровать результат команды od

Всем привет.у меня стоит задача: есть файл file в нём какой-то текст. выполнили команду cat file | od -An -to4 её результат: 14730266146 06115661137 07116231065 06214462146 14230630546 00016030542 . нужно узнать что было изначально в file.
Ответ: что было изначально в файле неизвестно(файла нет есть только результат команды)
Вопрос: Передать результат команды в другую

Друзья, прошу помощи в написании скрипта.
Необходимо очищать бинарные логи mysql, которые быстро разрастаются. Прошу не пинать, сам знаю, что это костыль да и качество кода оставляет желать лучшего.
Почти осилил скрипт, но не могу заставить работать основную команду вида:
Bash
1
mysql -u RemoteRoot -pdfd4r4rfds -h 10.10.0.22 -v -e "PURGE BINARY LOGS TO 'mysql-bin.010'";

Вот скрипт, пароли id телеграма изменены, так что все нормально:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/bin/bash 
#=========================Calculating free space in /
var=$(df -h / | grep "/dev/" | awk '{print $4}')
tmp1=${var::-1}
#==========================Checking variable's value
if (( tmp1 < 50))
                then
                    #==========================Writing data to log and sending message via Telegram 
                    echo "` date '+ %y-%m-%d %H:%M:%S'` free space is $tmp1 Gb. Urgent removal activated." >> /tmp/binlog_remover_script.txt  
                    curl -v --show-error -x socks5://10.10.0.21:20001 -s -X POST https://api.telegram.org/bot623965848:AAFSmsdsaPXBDA4Cn3Zh-mUnuFdU35WiXm8/sendMessage -F chat_id=-293723449 -F text="There is a lack of free space on mysqldb (22 server). Urgent binlog remover script activation." >> /tmp/binlog_remover_script.txt
                    #==========================Finding middle file in list and deleting all binlogs until it
                    ls /var/lib/mysql/ | grep  mysql-bin.'[0-9]' > /tmp/tmp_rows_counter.txt
                    tmp2=`wc -l /tmp/tmp_rows_counter.txt | awk '{print $1}'`
                    let "tmp2 = tmp2 / 2"
                    tmp3=`nl /tmp/tmp_rows_counter.txt | grep $tmp2 | awk '{print $2}' | grep -v $tmp2`
                    #========================== tmp3 is filename 
                    tmp4=`echo "\"PURGE BINARY LOGS TO '$tmp3'"\"` 
                    
                    mysql -u RemoteRoot -pdfd4r4rfds -h 10.10.0.22 -v -e $tmp4
                else
                    echo "` date '+ %y-%m-%d %H:%M:%S'` binlogs are so big, free space is $tmp1 Gb" >> /tmp/binlog_remover_script.txt
                fi
Ответ: Всем спасибо, вопрос решен.

Сообщение от Marinero
Ну а то что Вы творите с командами - это от незнания их опций черезчур увлекаетесь grep и awk
Тут полностью согласен, приходится лезть в БАШ один раз в 2 года, так что ни времени ни мотивации особо нет.
Вопрос: Как сделать конкатенацию результата команды со строкой.

Подскажите.

Команда возвращает список: cat /home/kushnira/AP_GLREF_INST.txt | awk '{print $1}'


AP_GLREF_INST_RDDH_F
AP_GLREF_INST_F_SET_LBD
AP_GLREF_INST_F_SET_FILEID
AP_GLREF_INST_F_GET_RDDH_FILES


Как сделать конкатенацию со строкой и вывести на экран?

Должно получится

delete_job: AP_GLREF_INST_RDDH_F
delete_job: AP_GLREF_INST_F_SET_LBD
........
Ответ: echo test|awk '{print "deleted:"$1}'
deleted:test
Вопрос: Получение результата от FTP комманды

Всем привет. Появилась задачка получать по FTP строку и обрабатывать ее в bash.
Сервер обучен команде time, которая возвращает строку формата dd.mm.yyyy hh:nn:ss

Нужен скрипт похожий на такое:
Bash
1
2
3
4
5
6
ftp 127.0.0.1 21
$Переменка=quote TIME
close
 
Работаем с $Переменка
...
Как правильно в Линуксе (Suse 10, если принципиально) читать результат команды?
Ответ:
Сообщение от nezabudka
озвучте найденное решение
Легко: plink.exe из Putty. С той лишь разницей, что информация будет запрошена не с Линукса, а наоборот передана на Линукс.
Предварительное решение конкретно под частный случай для линукса. В дальнейшем продумываю написать нативочку на Лазарусе. Или вообще в течении года заменить те дурацкие ПО, что в задаче участвуют на более новые и удобные.

P.S. Есть и еще одно решение именно баш скриптом, но я не буду его озвучивать.
Вопрос: команда Make в debian7 ругается.

добрый день! озадачился поддержкой OpenGL приложений в debian. с этой целью был скурен мануал, скачан пакет wine-1.6.2 и найден подходящий бубен. начинаю танцевать -

root@odin:/home/zloi/wine-1.6.2# nano tools/wineinstall
#здесь меняем строку CONFARGS= "" на CONFARGS="--with-opengl --disable-debug --disable-trace"
root@odin:/home/zloi/wine-1.6.2# sudo apt-get install auto-apt checkinstall sudo auto-apt -y run ./configure
# тут тоже вроде б все норм проходит,
# теперь собираем
root@odin:/home/zloi/wine-1.6.2# make
make: *** Не заданы цели и не найден make-файл. Останов.

результат команды ls -l /usr/bin/*make

-rwxr-xr-x 1 root root 41376 ноя 25 2012 /usr/bin/ccxxmake
-rwxr-xr-x 1 root root 160396 апр 15 2012 /usr/bin/make
-rwxr-xr-x 1 root root 4872 апр 18 2012 /usr/bin/pbmmake
-rwxr-xr-x 1 root root 4288 апр 18 2012 /usr/bin/ppmmake

root@odin:/home/zloi/wine-1.6.2# ls Makefile*
Makefile.in
но это ж просто шаблон....

вот общий ls
root@odin:/home/zloi/wine-1.6.2# ls
aclocal.m4 configure.ac include Makefile.in programs
ANNOUNCE COPYING.LIB libs Make.rules.in README
AUTHORS dlls LICENSE Maketest.rules.in server
config.log documentation LICENSE.OLD Make.vars.in tools
configure fonts loader po VERSION

куда дальше?
Ответ:
Ivan_Pisarevsky
Партизанишь. :) Поезда уже не надо под откос пускать.


было б что в тех поездах... давно б уже пускал. а так - жену мне надо, 28 лет, а я до часу ночи на работе пытаюсь в дебиане настроить wine для того, чтоб в сталкера можно было играть, не переключаясь на винду. такими темпами и до Gentoo недалеко.
Вопрос: Передача вывода команды через конвейер

Здравствуйте!

Помогите, пожалуйста, понять принцип передачи вывода\результата выполнения команды по конвейеру в bash. Вот, например:
Bash
1
2
3
[alexey@Satellite ~]$ echo '123' | tee new_file | > /dev/null
[alexey@Satellite ~]$ cat new_file 
[alexey@Satellite ~]$
Ход выполнения строки 1 я себе представляю так:
Вывод команды 'echo'(символы '123') поступает на вход команды 'tee', которая сначала направляет этот вывод в файл 'new_file', а затем передаёт его дальше по конвейеру(в /dev/null). Но почему же в 'new_file' ничего не записалось? Ведь, по-идее, вывод команды 'echo' должен быть направлен в битоприёмник только после записи в 'new_file'.

Добавлено через 31 минуту

До меня тут вдруг дошло, что написать надо было так:
Bash
1
echo '123' | tee new_file > /dev/null
Но я всё равно не понял, почему в первом случае в 'new_file' ничего не записалось.
Ответ: Alexey104, Небольшая поправка, я перечитала ваше сообщение с первой строчкой
кода и есть что добавить.
Команда tee читает поток из пайпа и синхронно раздваивает его в файл и на стандартный вывод.
Когда вы ставите дальше конвеер то перенаправляете один вывод команды tee со стандартного
выходного потока а конвеер, а второй поток остается направленным в файл, но так как после очередного
конвеера нет команды способной принять информацию то tee работая синхронно с двумя потоками
не передает информацию и в файл тоже.
Вот, думаю понятно и правильно обрисовала работу вашей первой строчки кода. В этом смысл
работы пайпа.

Добавлено через 3 часа 14 минут
volodin661, Создала в заметках памятку, буду исправляться. Спасибо
Вопрос: Команда-скрипт для открытия "Панели Управления" по клику. OS LM 17.1 "Rebecca" Cinnamon

Здравствуйте.
Настроил систему под себя, включил в настройках панели "Параметры автоматического скрытия" - Автоматически скрывать панель. Вместо "Панели Управления" включил в Docky на верхней панели - "Отображение приложений не имеющих ярлыков". В общем удобно если включить опцию "Интелектуальное скрытие", но не полнофункционально - НЕТ ВОЗМОЖНОСТИ ПРОСМОТРА РАСКЛАДКИ "RUS" или "EN". В "Докклетах" и "Дополнениях" Docky - этой функции тоже нет... И для того, что бы узнать раскладку, приходится перемещать курсор в верх экрана для открытия панели - что не очень удобно.
Видео:
---------------------------------------------------------------------------------------
С помощью утлиты "xdotool" создал скрипт для смены раскладки клавиатуры:

Смена раскладки.sh
------------------
#!/bin/sh

# Смена раскладки клавиатуры

xdotool key 37+50
sleep 1



# Открыть панель управления

?????????????
(добавить команду)
?????????????


------------------

Локаль меняется, но опять же скрыто...Хотелось бы совместить "Открытие панели" во время "Смены раскладки".
Нужен ( ????? команда-скрипт ????? ) для открытия панели.
------------------

Подскажите где находится файл конфигурации "Панели Управления"
для которой создана вот эта оболочка:


И в правильном ли направлении я "копаю".
Гугл результатов не дал.

За ранее спасибо.
Ответ: Здравствуйте helter

"Наверно, симулировать движение мыши с помощью того же xdotool" - спасибо за подсказку, очень пригодилась !


Создал скрипт:
#!/bin/sh

# Смена раскладки клавиатуры
xdotool key 37+50
sleep 1

# Координаты индикатора "Раскладка клавиатуры"

xdotool mousemove --sync 1747 0

# --------------------------------------------------------

# Задержка курсора на панели

sleep 1 # Отображение курсора на индикаторе
# sleep 2,2 # Короткое отображение курсора на индикаторе

# --------------------------------------------------------
xdotool mousemove_relative --sync 0 0

# Возврат курсора на кнопку "Сменить раскладку клавиатуры"

xdotool mousemove_relative --sync 0 1040

# ---------------------------------------------------------

# ПАНЕЛЬ (настройки) "sleep 1"

# Задержка перед показом - 500
# Задержка перед скрытием - 500


# ПАНЕЛЬ (настройки) "sleep 2,2"

# Задержка перед показом - 0
# Задержка перед скрытием - 500

# ---------------------------------------------------------


# xdotool позволяет перемещать указатель мыши по экрану, используя команду MouseMove. В X Window System языком, начало экрана в верхнем левом углу, которая имеет X и Y (горизонтальная и вертикальная) координаты 0 и 0. Если разрешение экрана 1024x768, то координаты для в правом верхнем углу локации 1023 (X) и 0 (Y). В нижней правой является 1023 (Х) и 767 (Y), и так далее.

# --------------------------------------------------------

# Ссылки: 1).
# 2).
# 3).
# 3).
# 4).


Видео:
Вопрос: Как совместить запуск команд от root и обычного пользователя в одном сценарии

Как совместить запуск команд от root и обычного пользователя в одном сценарии

Пример

Кликните здесь для просмотра всего текста
Bash
1
2
3
4
5
6
7
8
9
#!/usr/bin/env bash
 
suu(){
sudo -s
echo -e "---------- Первый -----------\n"
exit
}
 suu
 echo -e "---------------Второй---------\n"


Обычный ввод в консоли позволяет делать все по частям

Bash
1
sudo -s
Оболочка получает права суперпользователя, выполняем какие-то команды...
Для перехода в обычный профиль с правами пользователя, выполняем команду

Bash
1
exit
Выполнение

Bash
1
sudo какая-то_команда
не подходит.

Подскажите как можно видоизменить скрипт, чтобы возможно было во время работы одного сценария переключаться из профиля пользователя с правами root, в профиль обычного пользователя, и выполнять нужные команды уже под обычным пользователем.
Ответ: Что касается 1-го вопроса, ответ (как это я понимаю) такой:

Сообщение от masli
Что это за переменная - $a - для чего она ?

С помощью sed можно вставлять данные в текстовый поток, используя команды i и a:
• Команда i добавляет новую строку перед заданной.
• Команда a добавляет новую строку после заданной.
Bash
1
$ echo "Another test" | sed 'a\First test '
Разобрался

Это означает - вставить фрагмент текта после последней строки, в данный файл.
Здесь,
$ - символ, используемый в регулярных выражениях и означающий - конец строки.
a - команда, используемая с утилитой sed, и означающая, что нужно вставить указанный текст после указанной опорной строки.

Добавлено через 6 часов 9 минут
Тема решена
Вопрос: Изменение владельца и прав доступа к директории командами chown и chmod

Помогите понять и разобраться!

Предположим вы использовали команду sudo для создания директории dir. По умолчанию для dir были выставлены права доступа rwxr-xr-x (владелец root, группа root). Таким образом никто кроме пользователя root не может ничего записывать в эту директорию, например, не может создавать файлы в ней.

После выполнения какой команды user из группы group всё-таки сможет создать файл внутри dir? Укажите все верные варианты ответов!

Примечание: считаем, что все команды выполняются от имени user, если явно не указано, что команда выполнена с sudo.

Какие варианты верные?

Bash
1
2
3
4
5
6
7
8
9
sudo chown user dir
sudo chmod o+w dir
chown user:group dir
sudo chown user:group dir
sudo chmod a+w dir
sudo chmod g+w dir
sudo chmod o+x dir
sudo chown :group dir
chmod o+w dir
Ответ: Спасибо. Вот теперь, кажется, всё стало ясно.
Правильный ответ - 2, остальные неверны.
Сообщение от Marinero
Можете попробовать выполнять команды и смотреть как изменяются права.
Да я вроде разобрался. Но может быть попробую на досуге.
Вопрос: Выполнить команду с правами суперпользователя в Debian 8

Здравствуйте! Подскажите пожалуйста, как выполнять команды в терминале от суперпользователя? Вот чтобы разархивировать архив, просит права. Мне бы хотелось настроить так, чтобы я всегда работал с правами и мне не приходилось каждый раз выполнять к каждому действию команды.
Ответ: Переходим под рута командой su , после этого устанавливает утилиту sudo командой #apt-get install sudo, после этого добавляем своего пользователя в группу sudo командой # adduser имя_пользователя sudo и перезагружаемся. Всё теперь можно работать из под sudo
В некоторых окружениях таких как Мате программа sudo идёт из коробки