LINUX.ORG.RU

Сообщения zudwa

 

bash, как вернуть результат из функции, выполняемой в фоне

Форум — Development

А как в bash при запуске функции в фоне вернуть результат? Про fifo знаю.

#!/usr/bin/env bash

declare -A results=([test1]=TEST1)
results["test2"]="TEST2"

# Function to perform a task
function search_param {
    local -n res=$3

    echo "Searching $1 on $2"
    sleep 2
    echo "Searchin on $2 completed"
    res[$2]="searching $2"
}

# Array to hold background process IDs
PIDS=()

param='1234'
declare -a hosts=("host1" "host2" "host3")

# Execute tasks in separate threads
for host in "${hosts[@]}"; do
    search_param $param $host results &
    PIDS+=($!)
done

# Wait for all threads to finish
for pid in "${PIDS[@]}"; do
    wait $pid
done

echo "All threads completed."

for i in "${!results[@]}"; do echo "${i}: ${results[$i]}"; done

exit 0

если запускать не в фоне

search_param $param $host results

то скрипт правильно отработает, но в 3 раза дольше, чем хотелось бы.

В принципе понимаю, почему так происходит. Хотелось бы найти решение.

 

zudwa
()

Раскладка переключается, а язык при печати в приложении нет

Форум — General

Почему раскладка переключается (en/ru), а язык при печати с клавиатуры в приложении нет? Как починить?

CentOs7, Gnome 3.28, RDP(VNC)

 , , ,

zudwa
()

Контроллер точек доступа wifi (WLC) для Linux

Форум — Admin

Существуют ли какие-то открытые реализации контроллера точек доступа (WLC) для Linux?

Интересует программное решение для произвольных точек доступа, которое м.б. установить на отдельный сервер, SOHO роутер или какой-нибудь sbc.

Или можно как-то централизованно рулить распределением нагрузкой между точками, роумингом (перебрасыванием клиента с точки на точку), и тп Есть какие-то открытые скрипты для этого?

Ну или кто чем пользуется?

 ,

zudwa
()

Как проверить наличие модема перед установлением ppp соединения?

Форум — Admin

В Debian Jessie установлен модем, который нужно включать «кнопкой» ( импульсом на gpio).

Сейчас модем периодически отваливается (устройство пропадает) и его нужно повторно включать.

Для модема настроен ppp c опцией persist.

Когда модем пропадает, файл устройства также пропадает и ppp при переустановлении соединения ругается на отсутствие файла.

Как проверить наличие модема перед (пере) установлением ppp соединения и, в случае необходимости, включать модем?

 , ,

zudwa
()

Virtual web browser (песочница)

Форум — Development

Существует ли opensource компонент на JavaScript, на подобие XTermjs, который бы имитировал не терминал, а окно браузера?

Хотя бы в минимальном виде.

Т.е. на вход ему поступает html страница, которую он рендерит в div-е реальной страницы.

При этом, если например кликаем на ссылку внутри этого компонента, он формирует get для этой ссылки. Если нужно докачать какой-то ресурс - get для этого ресурса. Т.е. делает все тоже самое, что делает обычный браузер, но через JS или AJAX вызовы.

Типа песочницы jsfiddle, но без редактора кода.

Или как такое можно реализовать?

 , ,

zudwa
()

Настройка nginx revproxy для веб-интерфейса huawei e3372h

Форум — Development

Кто-нибудь настраивал nginx revproxy для веб-интерфейса huawei модемов?

Ну или подскажите как настроить.

Пока конфигурация следующая:

  location /hilink/ {
    proxy_pass http://192.168.8.1/;
    proxy_pass_header Connection;
    proxy_pass_header Cookie;
    proxy_pass_header Host;
    proxy_pass_header Referer;
    proxy_pass_header Upgrade-Insecure-Requests;
    proxy_pass_header X-Requested-With;
    proxy_pass_header __RequestVerificationToken;
    #proxy_pass_header Set-Cookie; 
    #proxy_cookie_domain $host 192.168.8.1;
    #proxy_set_header Host 192.168.8.1;
    #proxy_set_header X-Forwarded-For $remote_addr;

  }

При переходе на ресурс */hilink/ страница пустая, постоянно перезагружается. Видимо чего-то не хватает.

Вроде бы прокинуты все требуемые заголовки (смотрел через браузера).

Возможно что-то еще требуется, кроме заголовков?

 , ,

zudwa
()

CMake c CMAKE_SYSROOT не видит библиотеки в rootfs

Форум — Development

CMake c CMAKE_SYSROOT не видит библиотеки в rootfs Выглядит это так:

/var/lib/tftpboot/rootfs/usr/lib/arm-linux-gnueabihf/librt.a(timer_create.o): In function `timer_create':
(.text+0x44): undefined reference to `__libc_do_syscall'
/var/lib/tftpboot/rootfs/usr/lib/arm-linux-gnueabihf/librt.a(timer_create.o): In function `timer_create':
(.text+0x126): undefined reference to `__libc_do_syscall'
/var/lib/tftpboot/rootfs/usr/lib/arm-linux-gnueabihf/librt.a(timer_settime.o): In function `timer_settime':
(.text+0x8): undefined reference to `__libc_do_syscall'
/var/lib/tftpboot/rootfs/usr/lib/arm-linux-gnueabihf/librt.a(timer_routines.o): In function `timer_helper_thread':
(.text+0x4e): undefined reference to `__libc_do_syscall'
/var/lib/tftpboot/rootfs/usr/lib/arm-linux-gnueabihf/librt.a(timer_routines.o): In function `timer_sigev_thread':
(.text+0xf4): undefined reference to `__libc_do_syscall'
/var/lib/tftpboot/rootfs/usr/lib/arm-linux-gnueabihf/librt.a(timer_routines.o):(.text+0x13e): more undefined references to `__libc_do_syscall' follow
/var/lib/tftpboot/rootfs/usr/lib/arm-linux-gnueabihf/librt.a(timer_routines.o): In function `__start_helper_thread':
(.text+0x186): undefined reference to `pthread_atfork'
/var/lib/tftpboot/rootfs/usr/lib/arm-linux-gnueabihf/librt.a(librt-cancellation.o): In function `__librt_disable_asynccancel':
(.text+0xda): undefined reference to `__libc_do_syscall'
collect2: error: ld returned 1 exit status

библиотека librt-2.19.so и линк на нее librt.so.1 лежат в rootfs/lib/arm-linux-gnueabihf

CMAKE_TOOLCHAIN_FILE:

SET(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)

# specify the cross compiler
SET(CMAKE_C_COMPILER   /opt/gcc-linaro-arm-linux-gnueabihf-4.9/bin/arm-linux-gnueabihf-gcc)
SET(CMAKE_CXX_COMPILER /opt/gcc-linaro-arm-linux-gnueabihf-4.9/bin/arm-linux-gnueabihf-g++)

# where is the target environment 
SET(CMAKE_SYSROOT /var/lib/tftpboot/rootfs )
#SET(CMAKE_LIBRARY_PATH ${CMAKE_SYSROOT}/lib ${CMAKE_SYSROOT}/usr/lib)

#SET(CMAKE_FIND_ROOT_PATH /var/lib/tftpboot/rootfs /opt/gcc-linaro-arm-linux-gnueabihf-4.9/arm-linux-gnueabihf/libc/usr )

# search for programs in the build host directories
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
# for libraries and headers in the target directories
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)

Такое окружение используется на двух компах: на одном проект собирается, на другом возникают ошибки (выше) с библиотеками.

При перемещении системных библиотеки в локальную директорию библиотек проекта сборка происходит успешно.

Установка переменных CMAKE_LIBRARY_PATH и CMAKE_FIND_ROOT_PATH ничего не дает.

Чего не хватает на втором компе?

 , ,

zudwa
()

sem_timedwait и CLOCK_MONOTONIC_RAW

Форум — Development

sem_timedwait принимает в качестве параметра абсолютный таймаут в CLOCK_REALTIME, каким образом для семафора (или мьютекса, или...) создать относительный таймаут в CLOCK_MONOTONIC_RAW ?

Почему этого нет в POSIX?

 , ,

zudwa
()

Подскажите Ethernet/3G/4G/WiFi Router

Форум — Linux-hardware

Подскажите Ethernet/3G/4G/WiFi Router со встроенным (желательно) или опциональным модемом и очень желательно предустановленным брокером MQTT в стоковой прошивке.

Существуют такие?

 , , , ,

zudwa
()

Как изменить параметры всплывающего уведомления Gnome?

Форум — Desktop

Как изменить параметры (цвет текста, фона) всплывающего уведомления, которое отправляется приложениями или через notify-send, в Gnome (Fedora) ?

 

zudwa
()

Nginx+ngx_http_proxy_module и mjpeg-streamer

Форум — Admin

Как перенаправить mjpeg-streamer'а c 127.0.0.1:8080 на 80 при помощи ngx_http_proxy_module?

Пока получилась вот такая конфигурация:

upstream "mjpg-streamer" {
	server 127.0.0.1:8080;
}

server {
	...

	location /webcam/ {
		proxy_pass http://mjpg-streamer/;
		include proxy.conf;
        }

	location /stream {
		proxy_pass "http://127.0.0.1:8080/?action=stream";
		include proxy.conf;
        }
}

настройки ngx_http_proxy_module в proxy.conf :

proxy_http_version 1.0;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;

Проверка...

[zudwa@localhost ~]$ curl http://192.168.0.192/webcam/ -I
Content-type: text/plain
Connection: close
Server: MJPG-Streamer/0.2
Cache-Control: no-store, no-cache, must-revalidate, pre-check=0, post-check=0, max-age=0
Pragma: no-cache
Expires: Mon, 3 Jan 2000 12:34:56 GMT

400: Not Found!
^C
[zudwa@localhost ~]$ curl http://192.168.0.192/stream -I
Content-type: text/plain
Connection: close
Server: MJPG-Streamer/0.2
Cache-Control: no-store, no-cache, must-revalidate, pre-check=0, post-check=0, max-age=0
Pragma: no-cache
Expires: Mon, 3 Jan 2000 12:34:56 GMT

400: Not Found!
^C
[zudwa@localhost ~]$ curl http://192.168.0.192:8080/?action=stream -I
HTTP/1.0 400 Bad Request
Content-type: text/plain
Connection: close
Server: MJPG-Streamer/0.2
Cache-Control: no-store, no-cache, must-revalidate, pre-check=0, post-check=0, max-age=0
Pragma: no-cache
Expires: Mon, 3 Jan 2000 12:34:56 GMT

[zudwa@localhost ~]$ curl http://192.168.0.192:8080/?action=snapshot
...!AVI1...xx..C.........

почему после прокси может теряться статус ответа HTTP ( HTTP/1.0 200 ОК )?

 ,

zudwa
()

Блокировка ioctl

Форум — Development

Почему может блокироваться ioctl на участке кода:

int sd;

sd = socket(AF_INET, SOCK_DGRAM, 0); DBG("socket : %i\n", sd);

if(sd > 0)
{
	struct ifconf ifconf;
	struct ifreq ifreq[CFG_NETWORK_MAXIFCS]={0};
	int interfaces;
	int i,rc;

	memset(&ifconf, 0, sizeof(struct ifconf));

	// Point ifconf's ifc_buf to our array of interface ifreqs.
	//ifconf.ifc_buf = (char *) ifreq;
	ifconf.ifc_ifcu.ifcu_buf = (caddr_t)ifreq;

	// Set ifconf's ifc_len to the length of our array of interface ifreqs.
	ifconf.ifc_len = sizeof(ifreq);

	DBG("ioctl start: %u\n", ifconf.ifc_len );

	//  Populate ifconf.ifc_buf (ifreq) with a list of interface names and addresses.
	if ((rc=ioctl(sd, SIOCGIFCONF, &ifconf)) < 0 )
	{
		DBG("ioctl error: %i\n", rc );
		goto error;
	}

	DBG("ioctl complete\n");

т.е. ни «ioctl complete», ни «ioctl error: » не печатаются, поток виснет.

После этого ifconfig также начинает виснуть

?

 , ,

zudwa
()

Заполнить матрицу по спирали

Форум — Development

Задача 2. Заполни матрицу

Олимпиада школьников по информатике 7-8(!!!) класс Задача 2. Заполни матрицу Научиться работать с матрицей, значит научиться, не только искать элементы, но и заполнять матрицу элементами Дано число n. Создайте матрицу A[2*n+1][2*n+1] и заполните ее по спирали, начиная с числа 0 в центральной клетке A[n+1][n+1]. Спираль выходит вверх, далее закручивается против часовой стрелки.

Формат входного файла Программа получает на вход одно число 1<n<255. Формат выходного файла Программа должна вывести полученный массив, отводя на вывод каждого числа ровно 3 символа.

Для n=2:

12 11 10 9 24

13 2 1 8 23

14 3 0 7 22

15 4 5 6 21

16 17 18 19 20

В принципе, решил. Но как-то мудрено для 7-8 класса.

( Решение )

Как сделать проще и понятней для школьника 7-8 класса?

 , , , ,

zudwa
()

Несколько целей при сборке в buildroot

Форум — Development

Как в buildroot автоматизировть сборку для нескольких manufacturer или board?

Т.е. допустим u-boot, uImage для всех одинаковые. А rootfs собирается с конфигурацией для соответствующего manufacturer?

 

zudwa
()

Ошибка USSD при работе через Modem Manager

Форум — Linux-hardware

При попытке получить баланс по USSD через Modem Manager

# mmcli -m 0  --3gpp-ussd-initiate="*100#"
error: couldn't initiate USSD session: 'GDBus.Error:org.freedesktop.ModemManager1.Error.Core.Failed: Invalid USSD response received: '^CCIN:2,0,"","",0''
В логе:
Feb 19 11:13:34 buildroot daemon.info syslog[534]: <debug> [1455880414.045238] [mm-port-serial.c:1237] mm_port_serial_open(): (ttyUSB0) device open count is 2 (open)
Feb 19 11:13:34 buildroot daemon.info syslog[534]: <debug> [1455880414.052579] [mm-port-serial-at.c:440] debug_log(): (ttyUSB0): --> 'AT+CUSD=1,"AA180C3602",15<CR>'
Feb 19 11:13:34 buildroot daemon.info syslog[534]: <debug> [1455880414.115446] [mm-port-serial-at.c:440] debug_log(): (ttyUSB0): <-- '<CR><LF>^CCIN:2,0,"","",0<CR><LF>'
Feb 19 11:13:34 buildroot daemon.info syslog[534]: <debug> [1455880414.119929] [mm-port-serial-at.c:440] debug_log(): (ttyUSB0): <-- '<CR><LF>OK<CR><LF>'
Feb 19 11:13:34 buildroot daemon.info syslog[534]: <debug> [1455880414.123821] [mm-port-serial.c:1294] _close_internal(): (ttyUSB0) device open count is 1 (close)
Feb 19 11:13:34 buildroot daemon.info syslog[534]: <debug> [1455880414.684579] [mm-port-serial-at.c:440] debug_log(): (ttyUSB0): <-- '<CR><LF>^RSSI: 23<CR><LF><CR><LF>^HCSQ:"WCDMA",60,55,55<CR><LF>'
Feb 19 11:13:34 buildroot daemon.info syslog[534]: <debug> [1455880414.688229] [huawei/mm-broadband-modem-huawei.c:1545] huawei_signal_changed(): 3GPP signal quality: 74
Feb 19 11:13:34 buildroot daemon.info syslog[534]: <debug> [1455880414.690621] [mm-iface-modem.c:1165] update_signal_quality(): Modem /org/freedesktop/ModemManager1/Modem/0: signal quality updated (74)
Feb 19 11:13:36 buildroot daemon.info syslog[534]: <debug> [1455880416.549254] [mm-port-serial-at.c:440] debug_log(): (ttyUSB0): <-- '<CR><LF>+CUSD: 0,"04110430043B0430043D0441003A00340035002C003500300440002C041B0438043C04380442003A0030002C0030003104400020",72<CR><LF>'
Feb 19 11:13:36 buildroot daemon.info syslog[534]: <debug> [1455880416.550896] [mm-broadband-modem.c:4875] cusd_received(): Unsolicited USSD URC received
Feb 19 11:13:37 buildroot daemon.info syslog[534]: <debug> [1455880417.791454] [mm-port-serial-at.c:440] debug_log(): (ttyUSB0): <-- '<CR><LF>^RSSI: 19<CR><LF><CR><LF>^HCSQ:"WCDMA",53,46,51<CR><LF>'
т.е. вообще говоря видно, что баланс приходит. Но MM почему-то ругается. Как починить?

 , ,

zudwa
()

Задать значение переменной или define на этапе компиляции в CMake

Форум — Development

Как в CMake присвоить значение переменной или создать define на этапе компиляции? Например из файла?

Например, требуется автоинкремент номера билда в проекте CMake при каждой последующей сборке. Номер билда генерируется внешним скриптом при каждой сборке.

Если делать вот так:

execute_process(COMMAND cat build-number.txt OUTPUT_VARIABLE VERSION_BUILD)
add_custom_target(generate_version ALL ./autobuild.sh COMMENT "build: ${VERSION_BUILD}")
то инкремент билда делается только при создании make (конфигурации проекта)

Пока не придумал ничего другого как вызывать cmake . при каждой сборке проекта make:

execute_process(COMMAND cat build-number.txt OUTPUT_VARIABLE VERSION_BUILD)
add_custom_target(generate_version ALL ./autobuild.sh COMMAND cmake . COMMENT "build: ${VERSION_BUILD}")

Знаю, что есть вариант с записью непосредственно в файлы проекта, динамическим созданием .h и т.п.

Интересует как в CMake задать значение переменной, чтобы в результирующем Makefile оно выглядело, например, как:

VERSION_BUILD=$(shell cat build-number.txt)
?

 ,

zudwa
()

Библиотека для настройки параметров окружения в Debian-подобных дистрибутивах

Форум — Development

Требуется читать/устанавливать настройки сети, времени и т.п.в Debian-подобных дистрибутивах (Raspbian, Cubian и тп). Вообще, чем больше дистрибутивов будет поддерживаться тем лучше. Подскажите пожалуйста библиотеку или как лучше реализовать данную функцию в программе на C? Пока смотрю Augeas, но видимо что-то он великоват для такой задачи.

 

zudwa
()

Как определить назначение портов для 3g/4g usb модема?

Форум — Development

Как определить назначение портов для 3g/4g usb модема?

Как без udev определить на каком порту /dev/ttyUSBx модема будут ttyUSB_utps_pcui, ttyUSB_utps_modem и т.д.?

 ,

zudwa
()

Как подружить gstreamer1 c тегом video из HTML5?

Форум — Development

Есть gstreamer1 с набором плагинов. Есть браузер на десктопе. Как вывести видео на веб-страницу средствами gstreamer1? Перепробовал уже кучу рецептов, среди которых рабочего варианта не оказлось...

 ,

zudwa
()

Установка nagios, pnp4nagios из репозитория Fedora 20

Форум — Admin

Требуется построить графики в nagios. Ставил subj из репозитория на Fedora 20. Данные пингов и snmp сбрасываются в файл pnp4nagios/perfdata. При запуске вебинтерфейса pnp4nagios возникает ошибка:

perfdata directory «/var/lib/pnp4nagios/test190» for host «test190» does not exist

rrd базы не создаются. В чем может быть дело?

Руководство pnp читаю. Но нужно ускорить. Если не сложно помогите советом.

 ,

zudwa
()

RSS подписка на новые темы