Ответы пользователя по тегу Linux
  • Как общаться с модемом в CLI linux?

    @TSerge Автор вопроса
    Как альтернатива вышенаписанному можно использовать простой скрипт
    посылки команд в serial порт, с предв. очисткой буфера и приём ответа модема:

    #!/usr/bin/env python
    # coding: utf8
    
    import sys
    import serial
    import time
    
    modem_port = '/dev/gsmmodem'
    modem_baudrates = [2400, 9600, 19200, 38400, 115200]
    modem_bytesize = 8
    modem_parity = serial.PARITY_NONE
    modem_stopbits = 1
    
    ser_modem = serial.Serial(modem_port, modem_baudrates[1], parity=modem_parity)
    
    ser_modem.flushInput()
    ser_modem.flushOutput()
    
    try:
        command = sys.argv[1] + '\r'
    except:
        command = 'AT' + '\r'
    
    for i in command:
        ser_modem.write(i)
        time.sleep(0.1)
    
    res = []
    while ser_modem.inWaiting() > 0:
        res.append(ser_modem.readline())
    
    ser_modem.close()
    
    print (''.join(res))
    Ответ написан
    Комментировать
  • Как и где правильно прописать свои правила iptables NAT в хост системе в KVM?

    @TSerge Автор вопроса
    Решение вопроса заключается в этом:

    Libvirtd hook для применения правил iptables

    При установке виртуализации KVM/qemu и использовании NAT существует проблема применения правил /etc/sysconfig/iptables. При загрузке системы на ранней стадии стартует сервис iptables: /etc/rc3.d/S08iptables -> ../init.d/iptables

    Далее в конце загрузки стартует libvirtd: /etc/rc3.d/S08iptables -> ../init.d/iptables который применяет свои default правила, если используется NAT для гостевых ОС.

    Выглядеть это может так:
    MASQUERADE tcp -- 192.168.122.0/24 !192.168.122.0/24 masq ports: 1024-65535
    MASQUERADE udp -- 192.168.122.0/24 !192.168.122.0/24 masq ports: 1024-65535
    MASQUERADE all -- 192.168.122.0/24 !192.168.122.0/24

    В итоге правила NAT не работают так, как это применялось в /etc/sysconfig/iptables.

    Ниже указано решение использования hooks в libvirtd для перезапуска сервиса iptables после старта libvirtd:

    1. mkdir /etc/libvirt/hooks
    2. vi /etc/libvirt/hooks/network

    #!/bin/bash

    # Libvirt hook, see: https://www.libvirt.org/hooks.html
    # for iptables reloading after host booted

    if [ "$2" = "started" ]; then

    /etc/init.d/iptables restart

    fi;

    exit 0;

    3. chmod 755 /etc/libvirt/hooks/network

    То есть сервис iptables перезагружается после старта демона libvirtd, применяя системные правила iptables.

    Описание libvirt hooks:

    www.libvirt.org/hooks.html
    libvirt.org/formatnwfilter.html
    wiki.libvirt.org/page/Networking#NAT_forwarding_.2...
    Ответ написан