{"id":31277,"date":"2021-06-19T00:19:01","date_gmt":"2021-06-18T22:19:01","guid":{"rendered":"https:\/\/eltallerdelbit.com\/?p=31277"},"modified":"2024-04-03T12:59:47","modified_gmt":"2024-04-03T10:59:47","slug":"script-reconectar-wifi-raspberry-pi","status":"publish","type":"post","link":"https:\/\/eltallerdelbit.com\/script-reconectar-wifi-raspberry-pi\/","title":{"rendered":"Script para comprobar el estado y reconectar WIFI en Raspberry"},"content":{"rendered":"
<\/p>\n <\/p>\n El script podr\u00eda ser algo as\u00ed:<\/p>\n Podemos enviar la salida a \/dev\/null<\/em><\/p>\n o podemos registrar la salida del script, por ejemplo en \/tmp\/ping-log.txt<\/em> <\/p>\n y que el script tenga los permisos 7 5 5<\/p>\n <\/p>\n En este caso vemos la tarea programada cada 15 minutos:<\/p>\n <\/p>\n <\/p>\n <\/p>\n <\/p>\n Comprobamos que se lanz\u00f3 el script desde crontab<\/em>, haciendo grep en los logs del sistema.<\/p>\n Primero buscamos coincidencias en todos los logs:<\/p>\n <\/p>\n <\/p>\n Luego, al ver que es un fichero binario, buscamos con grep en fichero binario:<\/p>\n <\/p>\n <\/p>\n Comprobamos que se ha registrado la ejecuci\u00f3n de la tarea programada en el log de syslog:<\/p>\n <\/p>\n Desactivamos la interfaz wifi con:<\/p>\n <\/p>\n Hemos visto c\u00f3mo podemos crear un script para comprobar cada cierto tiempo el estado de la interfaz wifi en Raspberry Pi<\/strong>, y reiniciarla si la interfaz se encuentra desactivada, en estado DOWN. Es muy \u00fatil para Raspberry que se encuentran conectadas a trav\u00e9s de la interfaz wifi y sufren de problemas de desconexi\u00f3n espor\u00e1dicos.<\/p>\n <\/p>\n\n Vamos a ver c\u00f3mo crear un script para reconectar Wifi en Raspberry Pi, autom\u00e1ticamente, que ser\u00e1 muy \u00fatil en los casos en que la wifi de la Raspberry Pi se desconecta.<\/p>\n","protected":false},"author":1,"featured_media":31304,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false},"categories":[1280],"tags":[1128,710],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/eltallerdelbit.com\/wp-json\/wp\/v2\/posts\/31277"}],"collection":[{"href":"https:\/\/eltallerdelbit.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/eltallerdelbit.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/eltallerdelbit.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/eltallerdelbit.com\/wp-json\/wp\/v2\/comments?post=31277"}],"version-history":[{"count":12,"href":"https:\/\/eltallerdelbit.com\/wp-json\/wp\/v2\/posts\/31277\/revisions"}],"predecessor-version":[{"id":31308,"href":"https:\/\/eltallerdelbit.com\/wp-json\/wp\/v2\/posts\/31277\/revisions\/31308"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/eltallerdelbit.com\/wp-json\/wp\/v2\/media\/31304"}],"wp:attachment":[{"href":"https:\/\/eltallerdelbit.com\/wp-json\/wp\/v2\/media?parent=31277"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/eltallerdelbit.com\/wp-json\/wp\/v2\/categories?post=31277"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/eltallerdelbit.com\/wp-json\/wp\/v2\/tags?post=31277"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}
\nEs extra\u00f1o pero parece que en algunos casos la wifi de la Raspberry Pi se desconecta tras unas horas de funcionamiento<\/a>. Algunos usuarios han recomendado deshabilitar la administraci\u00f3n de energ\u00eda en Raspberry Pi para que la wifi no se desconecte<\/a>, pero a\u00fan as\u00ed se sigue desconectando en ocasiones.
\n
\nAs\u00ed que vamos a ver c\u00f3mo crear un script que se encargue de comprobar cada cierto tiempo que la Raspberry Pi tiene la wifi activa y conectada a la red<\/a>, y si no es as\u00ed, reinicie de nuevo la interfaz wifi.
\n
\n
\n <\/p>\n
\nEn este art\u00edculo:<\/p>\n\n
\n
Crear el script para reiniciar la interfaz Wifi en Raspberry Pi<\/span><\/h3>\n
\nLo primero tenemos que crear el script; lo crearemos en\u00a0 \/usr\/local\/bin\/<\/em> , que es el directorio de programas que puede ejecutar un usuario normal.<\/p>\npi@raspberry:~ $ cat \/usr\/local\/bin\/wifi_rebooter.sh\r\n#!\/bin\/bash\r\n\r\n# La IP del server al que queremos hacer ping (8.8.8.8 es un servidor DNS p\u00fablico de Google)\r\nSERVER=8.8.8.8\r\n\r\n# Enviar solamente 2 pings, y enviar la salida a \/dev\/null\r\nping -c2 ${SERVER} > \/dev\/null\r\n\r\n# Si el c\u00f3digo de respuesta del ping ($?) no es 0 (significar\u00e1 que hay error)\r\nif [ $? != 0 ]\r\nthen\r\n# Reiniciar la interfaz wifi\r\nsudo ip link set wlan0 down\r\nsudo ip link set wlan0 up\r\n# sudo ifdown --force wlan0\r\n# sudo ifup wlan0\r\nfi\r\n<\/pre>\n
\n <\/p>\nPermisos del script<\/span><\/h4>\n
\nNo nos olvidemos de hacer ejecutable el script, con<\/p>\n\r\nchmod +x \/usr\/local\/bin\/wifi_rebooter.sh\r\n<\/pre>\n
\n
\n
\n <\/p>\nCrear una tarea programada (crontab<\/em>) para la ejecuci\u00f3n del script<\/span><\/h3>\n
\nPara que el script se ejecute cada cierto tiempo, crearemos una tarea programada en el crontab<\/em><\/strong> del usuario pi (pero haciendo que se ejecute con root<\/em>):<\/p>\n*\/15 * * * * root \/usr\/local\/bin\/wifi_rebooter.sh\r\n<\/pre>\n
\n <\/p>\nComprobar que el script y la programaci\u00f3n en crontab<\/em> funciona<\/span><\/h3>\n
\nLanzamos el script manualmente y chequeamos el log (en este caso hemos redirigido la salida al log \/tmp\/ping-log.tx<\/em>t ):<\/p>\n\r\ntail -f \/tmp\/ping-log.txt\r\n<\/pre>\n
\r\nsudo grep 'wifi_rebooter' \/var\/log\/*\r\ngrep: \/var\/log\/apt: Is a directory\r\nBinary file \/var\/log\/auth.log matches\r\ngrep: \/var\/log\/journal: Is a directory\r\ngrep: \/var\/log\/lightdm: Is a directory\r\ngrep: \/var\/log\/private: Is a directory\r\nBinary file \/var\/log\/syslog.1 matches\r\n<\/pre>\n
\r\npi@raspberry:~ $ sudo grep -a 'wifi_rebooter' \/var\/log\/syslog.1\r\nApr 22 19:30:01 raspberry CRON[4923]: (pi) CMD (root \/usr\/local\/bin\/wifi_rebooter.sh)\r\nApr 22 19:45:01 raspberry CRON[32695]: (pi) CMD (root \/usr\/local\/bin\/wifi_rebooter.sh)\r\nApr 22 20:00:01 raspberry CRON[28126]: (pi) CMD (root \/usr\/local\/bin\/wifi_rebooter.sh)\r\nJun 17 11:15:01 raspberry CRON[1061]: (pi) CMD (root \/usr\/local\/bin\/wifi_rebooter.sh)\r\n<\/pre>\n
\n
\n
\nTambi\u00e9n podemos desactivar la interfaz wifi, y comprobar despu\u00e9s que el script ha funcionado y la interfaz wifi se ha vuelto a levantar.<\/p>\n\r\nifdown --force wlan0\r\n<\/pre>\n