Нет, listen()
не будет работать на дейтаграммном сокете, так как нет соединения для установки или разрыва. После bind()
сокета вы можете немедленно начать отправку пакетов, используя sendto()
для указания адреса получателя. Вы можете использовать recv()
или даже read()
для получения пакетов, но вам следует использовать recvfrom()
, если вы также хотите знать, кто отправил пакет (например, чтобы вы могли ответить ему).
Если вы хотите поговорить с конкретным хостом, вы можете (но не обязаны) использовать connect()
на дейтаграммном сокете. В этом случае connect()
не будет фактически устанавливать соединение с удаленным узлом; она просто установит назначение сокета по умолчанию, поэтому вы можете использовать такие функции, как send()
или write()
, которые не позволяют вам указывать назначение.
Para realizar acciones si no se encuentra su dirección IP 222.222.222.222, puede escribir un script bash
de la siguiente manera:
#!/bin/bash
listdata.sh | grep "\"222\.222\.222\.222:" > /dev/null
if [ $? -ne 0 ] # if grep not successful
then
... do some actions
fi
Gracias @Rui F Ribeiro Estos son mis guiones finales
#!/bin/bash
listdata.sh | grep "\"222.222.222.222:" > /dev/null
if [ $? -ne 0 ] # if grep not successful
then
addIPtolist.sh > /dev/null
echo "`date -u` Not in list" >> /var/log/listdata.log
exit
fi
echo "`date -u` OK Still in list" >> /var/log/listdata.log
Y este es mi loop bash
#!/bin/bash
while true
do
listdata.sh
sleep 60
done