<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://es.wiki.guifi.net/w/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
		<id>http://es.wiki.guifi.net/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Piura</id>
		<title>Guifi.net - Wiki Hispano - Contribuciones del usuario [es]</title>
		<link rel="self" type="application/atom+xml" href="http://es.wiki.guifi.net/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Piura"/>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/Especial:Contribuciones/Piura"/>
		<updated>2026-07-29T19:57:22Z</updated>
		<subtitle>Contribuciones del usuario</subtitle>
		<generator>MediaWiki 1.22.0</generator>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/Proyecto_de_Fin_de_Carrera</id>
		<title>Proyecto de Fin de Carrera</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/Proyecto_de_Fin_de_Carrera"/>
				<updated>2013-06-23T13:23:57Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: /* Acabados */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Archivo:Graduate_award.svg|right|200px]]&lt;br /&gt;
&lt;br /&gt;
A menudo&amp;lt;ref name=&amp;quot;trastos&amp;quot;&amp;gt;https://lists.guifi.net/pipermail/guifi-rdes/2011-November/022033.html&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://lists.guifi.net/pipermail/guifi-usuaris/2012-March/018092.html&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://lists.guifi.net/pipermail/guifi-webdev/2012-March/001769.html&amp;lt;/ref&amp;gt;, estudiantes o investigadores contactan con la comunidad de Guifi.net porque desean realizar proyectos de investigación, '''Proyectos de Fin de Carrera''' (PFC) o de final de ciclo  CFGS relacionados con la red Guifi.net o que puedan ayudar a su expansión.&lt;br /&gt;
&lt;br /&gt;
Los proyectos o trabajos no tienen porqué ser únicamente '''técnicos''', de informática o telecomunicaciones. Dentro de Guifi.net también tienen cabida proyectos y trabajos de carácter '''legal''', '''social''', '''psicológico''', '''publicidad''', de '''contenidos'''..., etc.&lt;br /&gt;
&lt;br /&gt;
Si estás interesado/a, lo mejor es que contactes con nosotros a través de la [[lista de correo]] de desarrollo ('''guifi-rdes''').&lt;br /&gt;
&lt;br /&gt;
== Proyectos ==&lt;br /&gt;
&lt;br /&gt;
=== En desarrollo ===&lt;br /&gt;
* [[Monitor]], por David Pérez Martorell (Máster de Software Libre, UOC)&lt;br /&gt;
&amp;lt;!-- * ''No hay ninguno de momento. ¿Te animas a hacer el próximo?'' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Acabados ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; &amp;lt;!-- style=&amp;quot;text-align:right&amp;quot; --&amp;gt;&lt;br /&gt;
|- style=&amp;quot;background:#ececec;&amp;quot;&lt;br /&gt;
! Nombre&lt;br /&gt;
! Autor/a&lt;br /&gt;
! Año&lt;br /&gt;
! Centro de estudios&lt;br /&gt;
! Idioma&lt;br /&gt;
! Descarga&lt;br /&gt;
! Licencia&lt;br /&gt;
! Página web&lt;br /&gt;
! Comentario&lt;br /&gt;
|-&lt;br /&gt;
| Gestión Ciudadana de la Tecnología: Una aproximación desde los Science and Technology Studies a las redes wifi y la governance urbana a través de guifi.net&lt;br /&gt;
| Yann Bona Beauvois&lt;br /&gt;
| -&lt;br /&gt;
| UAB&lt;br /&gt;
| Español&lt;br /&gt;
| [[:Archivo:Gestion_Ciudadana_de_la_Tecnologia.pdf|PDF]]&lt;br /&gt;
| -&lt;br /&gt;
| [http://ddd.uab.cat/record/70077?ln=ca] [http://psicologiasocial.uab.es/athenea/index.php/atheneaDigital/article/view/849]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| [[Utilidades Guifi.net]] y [[GuifiManage]]&lt;br /&gt;
| [[Usuario:Ganon|Isidro Manzano Navaza]].&lt;br /&gt;
| 2012&lt;br /&gt;
| [http://www.escoladeltreball.org Escola del Treball de Barcelona]&lt;br /&gt;
| Catalan, castellano e ingles&lt;br /&gt;
| [https://gitorious.org/caixa-d-eines-de-guifi-net/caixa-d-eines-de-guifi-net Repositorio]&lt;br /&gt;
| GPL el código, CC-by los diagramas y GNU FDL la documentación.&lt;br /&gt;
| -&lt;br /&gt;
| Android - Java&lt;br /&gt;
|-&lt;br /&gt;
| PFC para mejorar la gestión y el soporte de nuevos dispositivos&amp;lt;ref name=&amp;quot;trastos&amp;quot;/&amp;gt;&amp;lt;ref&amp;gt;https://lists.guifi.net/pipermail/guifi-rdes/2012-June/024570.html&amp;lt;/ref&amp;gt;[https://lists.guifi.net/pipermail/guifi-rdes/2012-June/024782.html] [http://terrassa.guifi.net/pfc_guifi_albertsarle/exposicio.html].&lt;br /&gt;
| [[Usuario:Albir|Albert Sarle]]&lt;br /&gt;
| 2012&lt;br /&gt;
| UAB&lt;br /&gt;
| Memoria en catalán&lt;br /&gt;
| [https://gitorious.org/~albertsarle/guifi/albertsarle-drupal-guifi_pfc Repositorio] [http://dl.dropbox.com/u/1834023/PFC_guifinet_AlbertSarle.pdf Memoria] [http://terrassa.guifi.net/pfc_guifi_albertsarle/exposicio.html Presentación HTML]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| PFC sobre el desarrollo del firmware [[Quick Mesh Project]] (QMP)&lt;br /&gt;
| [[Usuario:Hakais|Pau Escrich]]&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| Memoria en inglés&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://qmp.cat/ Sitio web del proyecto] [http://upcommons.upc.edu/pfc/handle/2099.1/14103] [http://qmp.cat/documents/11 Tesis - Documentación técnica] {{en}}&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Sistema de servidores [[VoIP]] del proyecto guifi.net&lt;br /&gt;
| Tomás Velázquez García&lt;br /&gt;
| -&lt;br /&gt;
| UAB&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://ddd.uab.cat/record/70278?ln=ca]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Millora de la gestió d’una xarxa WiFi: Guifi.net&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/3798]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Wifi mesh network nodes on guifi.net &lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/7383]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Estudi i propostes de millora de la xarxa Guifi.net (I)&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/4622]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Estudio y propuestas de mejora de la red GUIFI.NET (II)&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/4623]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Scalability study of Guifi.net and mesh networks&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/11580]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Protocolos de encaminamiento en redes inalámbricas mesh: un estudio teórico y experimental&lt;br /&gt;
| Albert Batiste Troyano&lt;br /&gt;
| 2011&lt;br /&gt;
| UOC / US&lt;br /&gt;
| Español&lt;br /&gt;
| [http://openaccess.uoc.edu/webapps/o2/bitstream/10609/8164/1/abatistet_TFM_0611.pdf]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Mejora de la aplicación de mapas de Guifi.net&amp;lt;ref&amp;gt;https://lists.guifi.net/pipermail/guifi-webdev/2012-July/001830.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
| David Rubio Miguélez&lt;br /&gt;
| 2012&lt;br /&gt;
| UJI&lt;br /&gt;
| Español&lt;br /&gt;
| [https://www.dropbox.com/s/974exzldfrno1wb/proyecto.pdf Memoria]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Perspectiva psicosocial ecológica del proyecto: la red social virtual abierta, libre y neutral basada en infraestructura&lt;br /&gt;
| Jordi Paradís Medina&lt;br /&gt;
| 2012&lt;br /&gt;
| UAB&lt;br /&gt;
| Catalán&lt;br /&gt;
| [http://generatech.org/sites/default/files/guifinet_social_ecologic.pdf Trabajo de fin de grado en psicología]&lt;br /&gt;
| Creative Commons 3.0 BY-NC-SA&lt;br /&gt;
| [http://psicovirtual.uab.cat/treballgrau/ocs/index.php/tfgpsico/tfg12/paper/view/25]&lt;br /&gt;
| Visió autoetnogràfica i holística d'aquest projecte tecnosocial, que inclou la descripció d'un seguit de dificultats detectades alhora de voler formar-ne part, en general i des de una casa apartada a la muntanya del Montnegre al Maresme Nord.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Servei SNPServices amb notificacio &lt;br /&gt;
|David Pérez Martorell&lt;br /&gt;
| 2013&lt;br /&gt;
|UOC&lt;br /&gt;
|Català&lt;br /&gt;
| [[Projecte Servei_de_notificació_d'alertes.odt‎]]&lt;br /&gt;
| Creative Commons 3.0 BY-NC-SA&lt;br /&gt;
|Presentacio [http://www.kaltura.com/index.php/kwidget/wid/_403921/uiconf_id/4438451/entry_id/1_hnw62y1i]&lt;br /&gt;
i Demostracio [http://www.kaltura.com/index.php/kwidget/wid/_403921/uiconf_id/4438451/entry_id/1_l68vxblh]&lt;br /&gt;
|Programes que amplien el servei SNPServices. Fa ping als nodes del grup de nodes del servidor d gràfics i informa al servidor web de incidencies. El servidor web envia correus als responsables&lt;br /&gt;
&amp;lt;!-- * ''No hay ninguno de momento. ¿Te animas a hacer el próximo?'' --&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ideas &amp;lt;ref&amp;gt;{{MM|url=https://lists.guifi.net/pipermail/guifi-usuaris/2012-March/018102.html|list=Usuaris}}&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
* Repetir algo de http://upcommons.upc.edu/pfc/handle/2099.1/11081 (sobre el orden &amp;quot;de entrada&amp;quot; de los paquetes ad-hoc vs infraestructura en un mismo canal)&lt;br /&gt;
* Plugins BGP-(OLSR/BATMAN/BMX)&lt;br /&gt;
&lt;br /&gt;
=== Personas del guifibages a finales de 2009 propusieron ===&lt;br /&gt;
* Evaluar el rendimiento de OLSR y compararlo con otros protocolos de enrutamiento dinámico. Buscar qué significan todos los parámetros de configuración y optimizar el rendimiento en guifibages.&lt;br /&gt;
* Estudiar el driver madwifi y optimizar el rendimiento en las condiciones guifibages (iría ligado con el anterior en un posible proyecto: &amp;quot;Optimización de guifibages: madwifi + OLSR&amp;quot;.&lt;br /&gt;
* Sistema de visualización en tiempo real de la calidad del enlace integrado en los mapas de Guifi.net a partir del plugin olsr-dot-draw/olsr-txtinfo.&lt;br /&gt;
* Creación de un testbed openwrt + mesh en la UPC: que el proyectista monte en la universidad una serie de radios dispersos por los edificios que se puedan poner en marcha, para y configurar desde un servidor &amp;quot;central&amp;quot;.&lt;br /&gt;
* Es un tipo de &amp;quot;encargo&amp;quot; que nos hemos tomado de la [[Open Spectrum Alliance]]. Se trataría de evaluar la ocupación de las frecuencias de TV (analógica y TDT) para averiguar los &amp;quot;espacios en blanco&amp;quot; de una zona.&lt;br /&gt;
* [https://lists.guifi.net/pipermail/guifi-rdes/2011-November/022064.html] [https://lists.guifi.net/pipermail/guifi-rdes/2011-November/022066.html]&lt;br /&gt;
&lt;br /&gt;
== Véase también ==&lt;br /&gt;
* [[Google Summer of Code]]&lt;br /&gt;
* [[Publicaciones]]&lt;br /&gt;
&lt;br /&gt;
== Referencias ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enlaces externos ==&lt;br /&gt;
* http://guifi.net/ca/node/3496 {{ca}}&lt;br /&gt;
* http://guifi.net/ca/ProjectesInvestigacio {{ca}}&lt;br /&gt;
* [http://ddd.uab.cat/search?ln=ca&amp;amp;as=1&amp;amp;m1=a&amp;amp;p1=guifi&amp;amp;f1=title&amp;amp;op1=a&amp;amp;m2=a&amp;amp;p2=&amp;amp;f2=codititulacio&amp;amp;op2=a&amp;amp;m3=a&amp;amp;p3=&amp;amp;f3=year&amp;amp;action_search=Cerca&amp;amp;c=Dip%C3%B2sit+Digital+de+Documents+de+la+UAB&amp;amp;sf=&amp;amp;so=a&amp;amp;rm=&amp;amp;rg=10&amp;amp;sc=1&amp;amp;of=hb Depósito Digital de Documentos de la UAB: guifi]&lt;br /&gt;
* [http://upcommons.upc.edu/pfc/simple-search?query=guifi Trabajos académicos UPC: guifi], upcommons&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Material académico]]&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/Proyecto_de_Fin_de_Carrera</id>
		<title>Proyecto de Fin de Carrera</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/Proyecto_de_Fin_de_Carrera"/>
				<updated>2013-06-23T13:22:38Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: /* Acabados */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Archivo:Graduate_award.svg|right|200px]]&lt;br /&gt;
&lt;br /&gt;
A menudo&amp;lt;ref name=&amp;quot;trastos&amp;quot;&amp;gt;https://lists.guifi.net/pipermail/guifi-rdes/2011-November/022033.html&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://lists.guifi.net/pipermail/guifi-usuaris/2012-March/018092.html&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://lists.guifi.net/pipermail/guifi-webdev/2012-March/001769.html&amp;lt;/ref&amp;gt;, estudiantes o investigadores contactan con la comunidad de Guifi.net porque desean realizar proyectos de investigación, '''Proyectos de Fin de Carrera''' (PFC) o de final de ciclo  CFGS relacionados con la red Guifi.net o que puedan ayudar a su expansión.&lt;br /&gt;
&lt;br /&gt;
Los proyectos o trabajos no tienen porqué ser únicamente '''técnicos''', de informática o telecomunicaciones. Dentro de Guifi.net también tienen cabida proyectos y trabajos de carácter '''legal''', '''social''', '''psicológico''', '''publicidad''', de '''contenidos'''..., etc.&lt;br /&gt;
&lt;br /&gt;
Si estás interesado/a, lo mejor es que contactes con nosotros a través de la [[lista de correo]] de desarrollo ('''guifi-rdes''').&lt;br /&gt;
&lt;br /&gt;
== Proyectos ==&lt;br /&gt;
&lt;br /&gt;
=== En desarrollo ===&lt;br /&gt;
* [[Monitor]], por David Pérez Martorell (Máster de Software Libre, UOC)&lt;br /&gt;
&amp;lt;!-- * ''No hay ninguno de momento. ¿Te animas a hacer el próximo?'' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Acabados ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; &amp;lt;!-- style=&amp;quot;text-align:right&amp;quot; --&amp;gt;&lt;br /&gt;
|- style=&amp;quot;background:#ececec;&amp;quot;&lt;br /&gt;
! Nombre&lt;br /&gt;
! Autor/a&lt;br /&gt;
! Año&lt;br /&gt;
! Centro de estudios&lt;br /&gt;
! Idioma&lt;br /&gt;
! Descarga&lt;br /&gt;
! Licencia&lt;br /&gt;
! Página web&lt;br /&gt;
! Comentario&lt;br /&gt;
|-&lt;br /&gt;
| Gestión Ciudadana de la Tecnología: Una aproximación desde los Science and Technology Studies a las redes wifi y la governance urbana a través de guifi.net&lt;br /&gt;
| Yann Bona Beauvois&lt;br /&gt;
| -&lt;br /&gt;
| UAB&lt;br /&gt;
| Español&lt;br /&gt;
| [[:Archivo:Gestion_Ciudadana_de_la_Tecnologia.pdf|PDF]]&lt;br /&gt;
| -&lt;br /&gt;
| [http://ddd.uab.cat/record/70077?ln=ca] [http://psicologiasocial.uab.es/athenea/index.php/atheneaDigital/article/view/849]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| [[Utilidades Guifi.net]] y [[GuifiManage]]&lt;br /&gt;
| [[Usuario:Ganon|Isidro Manzano Navaza]].&lt;br /&gt;
| 2012&lt;br /&gt;
| [http://www.escoladeltreball.org Escola del Treball de Barcelona]&lt;br /&gt;
| Catalan, castellano e ingles&lt;br /&gt;
| [https://gitorious.org/caixa-d-eines-de-guifi-net/caixa-d-eines-de-guifi-net Repositorio]&lt;br /&gt;
| GPL el código, CC-by los diagramas y GNU FDL la documentación.&lt;br /&gt;
| -&lt;br /&gt;
| Android - Java&lt;br /&gt;
|-&lt;br /&gt;
| PFC para mejorar la gestión y el soporte de nuevos dispositivos&amp;lt;ref name=&amp;quot;trastos&amp;quot;/&amp;gt;&amp;lt;ref&amp;gt;https://lists.guifi.net/pipermail/guifi-rdes/2012-June/024570.html&amp;lt;/ref&amp;gt;[https://lists.guifi.net/pipermail/guifi-rdes/2012-June/024782.html] [http://terrassa.guifi.net/pfc_guifi_albertsarle/exposicio.html].&lt;br /&gt;
| [[Usuario:Albir|Albert Sarle]]&lt;br /&gt;
| 2012&lt;br /&gt;
| UAB&lt;br /&gt;
| Memoria en catalán&lt;br /&gt;
| [https://gitorious.org/~albertsarle/guifi/albertsarle-drupal-guifi_pfc Repositorio] [http://dl.dropbox.com/u/1834023/PFC_guifinet_AlbertSarle.pdf Memoria] [http://terrassa.guifi.net/pfc_guifi_albertsarle/exposicio.html Presentación HTML]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| PFC sobre el desarrollo del firmware [[Quick Mesh Project]] (QMP)&lt;br /&gt;
| [[Usuario:Hakais|Pau Escrich]]&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| Memoria en inglés&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://qmp.cat/ Sitio web del proyecto] [http://upcommons.upc.edu/pfc/handle/2099.1/14103] [http://qmp.cat/documents/11 Tesis - Documentación técnica] {{en}}&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Sistema de servidores [[VoIP]] del proyecto guifi.net&lt;br /&gt;
| Tomás Velázquez García&lt;br /&gt;
| -&lt;br /&gt;
| UAB&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://ddd.uab.cat/record/70278?ln=ca]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Millora de la gestió d’una xarxa WiFi: Guifi.net&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/3798]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Wifi mesh network nodes on guifi.net &lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/7383]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Estudi i propostes de millora de la xarxa Guifi.net (I)&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/4622]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Estudio y propuestas de mejora de la red GUIFI.NET (II)&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/4623]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Scalability study of Guifi.net and mesh networks&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/11580]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Protocolos de encaminamiento en redes inalámbricas mesh: un estudio teórico y experimental&lt;br /&gt;
| Albert Batiste Troyano&lt;br /&gt;
| 2011&lt;br /&gt;
| UOC / US&lt;br /&gt;
| Español&lt;br /&gt;
| [http://openaccess.uoc.edu/webapps/o2/bitstream/10609/8164/1/abatistet_TFM_0611.pdf]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Mejora de la aplicación de mapas de Guifi.net&amp;lt;ref&amp;gt;https://lists.guifi.net/pipermail/guifi-webdev/2012-July/001830.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
| David Rubio Miguélez&lt;br /&gt;
| 2012&lt;br /&gt;
| UJI&lt;br /&gt;
| Español&lt;br /&gt;
| [https://www.dropbox.com/s/974exzldfrno1wb/proyecto.pdf Memoria]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Perspectiva psicosocial ecológica del proyecto: la red social virtual abierta, libre y neutral basada en infraestructura&lt;br /&gt;
| Jordi Paradís Medina&lt;br /&gt;
| 2012&lt;br /&gt;
| UAB&lt;br /&gt;
| Catalán&lt;br /&gt;
| [http://generatech.org/sites/default/files/guifinet_social_ecologic.pdf Trabajo de fin de grado en psicología]&lt;br /&gt;
| Creative Commons 3.0 BY-NC-SA&lt;br /&gt;
| [http://psicovirtual.uab.cat/treballgrau/ocs/index.php/tfgpsico/tfg12/paper/view/25]&lt;br /&gt;
| Visió autoetnogràfica i holística d'aquest projecte tecnosocial, que inclou la descripció d'un seguit de dificultats detectades alhora de voler formar-ne part, en general i des de una casa apartada a la muntanya del Montnegre al Maresme Nord.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Servei SNPServices amb notificacio [[Monitor]]&lt;br /&gt;
|David Pérez Martorell&lt;br /&gt;
| 2013&lt;br /&gt;
|UOC&lt;br /&gt;
|Català&lt;br /&gt;
| [[Projecte Servei_de_notificació_d'alertes.odt‎]]&lt;br /&gt;
| Creative Commons 3.0 BY-NC-SA&lt;br /&gt;
|Presentacio [http://www.kaltura.com/index.php/kwidget/wid/_403921/uiconf_id/4438451/entry_id/1_hnw62y1i]&lt;br /&gt;
i Demostracio [http://www.kaltura.com/index.php/kwidget/wid/_403921/uiconf_id/4438451/entry_id/1_l68vxblh]&lt;br /&gt;
|Programes que amplien el servei SNPServices. Fa ping als nodes del grup de nodes del servidor d gràfics i informa al servidor web de incidencies. El servidor web envia correus als responsables&lt;br /&gt;
&amp;lt;!-- * ''No hay ninguno de momento. ¿Te animas a hacer el próximo?'' --&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ideas &amp;lt;ref&amp;gt;{{MM|url=https://lists.guifi.net/pipermail/guifi-usuaris/2012-March/018102.html|list=Usuaris}}&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
* Repetir algo de http://upcommons.upc.edu/pfc/handle/2099.1/11081 (sobre el orden &amp;quot;de entrada&amp;quot; de los paquetes ad-hoc vs infraestructura en un mismo canal)&lt;br /&gt;
* Plugins BGP-(OLSR/BATMAN/BMX)&lt;br /&gt;
&lt;br /&gt;
=== Personas del guifibages a finales de 2009 propusieron ===&lt;br /&gt;
* Evaluar el rendimiento de OLSR y compararlo con otros protocolos de enrutamiento dinámico. Buscar qué significan todos los parámetros de configuración y optimizar el rendimiento en guifibages.&lt;br /&gt;
* Estudiar el driver madwifi y optimizar el rendimiento en las condiciones guifibages (iría ligado con el anterior en un posible proyecto: &amp;quot;Optimización de guifibages: madwifi + OLSR&amp;quot;.&lt;br /&gt;
* Sistema de visualización en tiempo real de la calidad del enlace integrado en los mapas de Guifi.net a partir del plugin olsr-dot-draw/olsr-txtinfo.&lt;br /&gt;
* Creación de un testbed openwrt + mesh en la UPC: que el proyectista monte en la universidad una serie de radios dispersos por los edificios que se puedan poner en marcha, para y configurar desde un servidor &amp;quot;central&amp;quot;.&lt;br /&gt;
* Es un tipo de &amp;quot;encargo&amp;quot; que nos hemos tomado de la [[Open Spectrum Alliance]]. Se trataría de evaluar la ocupación de las frecuencias de TV (analógica y TDT) para averiguar los &amp;quot;espacios en blanco&amp;quot; de una zona.&lt;br /&gt;
* [https://lists.guifi.net/pipermail/guifi-rdes/2011-November/022064.html] [https://lists.guifi.net/pipermail/guifi-rdes/2011-November/022066.html]&lt;br /&gt;
&lt;br /&gt;
== Véase también ==&lt;br /&gt;
* [[Google Summer of Code]]&lt;br /&gt;
* [[Publicaciones]]&lt;br /&gt;
&lt;br /&gt;
== Referencias ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enlaces externos ==&lt;br /&gt;
* http://guifi.net/ca/node/3496 {{ca}}&lt;br /&gt;
* http://guifi.net/ca/ProjectesInvestigacio {{ca}}&lt;br /&gt;
* [http://ddd.uab.cat/search?ln=ca&amp;amp;as=1&amp;amp;m1=a&amp;amp;p1=guifi&amp;amp;f1=title&amp;amp;op1=a&amp;amp;m2=a&amp;amp;p2=&amp;amp;f2=codititulacio&amp;amp;op2=a&amp;amp;m3=a&amp;amp;p3=&amp;amp;f3=year&amp;amp;action_search=Cerca&amp;amp;c=Dip%C3%B2sit+Digital+de+Documents+de+la+UAB&amp;amp;sf=&amp;amp;so=a&amp;amp;rm=&amp;amp;rg=10&amp;amp;sc=1&amp;amp;of=hb Depósito Digital de Documentos de la UAB: guifi]&lt;br /&gt;
* [http://upcommons.upc.edu/pfc/simple-search?query=guifi Trabajos académicos UPC: guifi], upcommons&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Material académico]]&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/Proyecto_de_Fin_de_Carrera</id>
		<title>Proyecto de Fin de Carrera</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/Proyecto_de_Fin_de_Carrera"/>
				<updated>2013-06-23T13:22:11Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: /* Acabados */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Archivo:Graduate_award.svg|right|200px]]&lt;br /&gt;
&lt;br /&gt;
A menudo&amp;lt;ref name=&amp;quot;trastos&amp;quot;&amp;gt;https://lists.guifi.net/pipermail/guifi-rdes/2011-November/022033.html&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://lists.guifi.net/pipermail/guifi-usuaris/2012-March/018092.html&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://lists.guifi.net/pipermail/guifi-webdev/2012-March/001769.html&amp;lt;/ref&amp;gt;, estudiantes o investigadores contactan con la comunidad de Guifi.net porque desean realizar proyectos de investigación, '''Proyectos de Fin de Carrera''' (PFC) o de final de ciclo  CFGS relacionados con la red Guifi.net o que puedan ayudar a su expansión.&lt;br /&gt;
&lt;br /&gt;
Los proyectos o trabajos no tienen porqué ser únicamente '''técnicos''', de informática o telecomunicaciones. Dentro de Guifi.net también tienen cabida proyectos y trabajos de carácter '''legal''', '''social''', '''psicológico''', '''publicidad''', de '''contenidos'''..., etc.&lt;br /&gt;
&lt;br /&gt;
Si estás interesado/a, lo mejor es que contactes con nosotros a través de la [[lista de correo]] de desarrollo ('''guifi-rdes''').&lt;br /&gt;
&lt;br /&gt;
== Proyectos ==&lt;br /&gt;
&lt;br /&gt;
=== En desarrollo ===&lt;br /&gt;
* [[Monitor]], por David Pérez Martorell (Máster de Software Libre, UOC)&lt;br /&gt;
&amp;lt;!-- * ''No hay ninguno de momento. ¿Te animas a hacer el próximo?'' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Acabados ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; &amp;lt;!-- style=&amp;quot;text-align:right&amp;quot; --&amp;gt;&lt;br /&gt;
|- style=&amp;quot;background:#ececec;&amp;quot;&lt;br /&gt;
! Nombre&lt;br /&gt;
! Autor/a&lt;br /&gt;
! Año&lt;br /&gt;
! Centro de estudios&lt;br /&gt;
! Idioma&lt;br /&gt;
! Descarga&lt;br /&gt;
! Licencia&lt;br /&gt;
! Página web&lt;br /&gt;
! Comentario&lt;br /&gt;
|-&lt;br /&gt;
| Gestión Ciudadana de la Tecnología: Una aproximación desde los Science and Technology Studies a las redes wifi y la governance urbana a través de guifi.net&lt;br /&gt;
| Yann Bona Beauvois&lt;br /&gt;
| -&lt;br /&gt;
| UAB&lt;br /&gt;
| Español&lt;br /&gt;
| [[:Archivo:Gestion_Ciudadana_de_la_Tecnologia.pdf|PDF]]&lt;br /&gt;
| -&lt;br /&gt;
| [http://ddd.uab.cat/record/70077?ln=ca] [http://psicologiasocial.uab.es/athenea/index.php/atheneaDigital/article/view/849]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| [[Utilidades Guifi.net]] y [[GuifiManage]]&lt;br /&gt;
| [[Usuario:Ganon|Isidro Manzano Navaza]].&lt;br /&gt;
| 2012&lt;br /&gt;
| [http://www.escoladeltreball.org Escola del Treball de Barcelona]&lt;br /&gt;
| Catalan, castellano e ingles&lt;br /&gt;
| [https://gitorious.org/caixa-d-eines-de-guifi-net/caixa-d-eines-de-guifi-net Repositorio]&lt;br /&gt;
| GPL el código, CC-by los diagramas y GNU FDL la documentación.&lt;br /&gt;
| -&lt;br /&gt;
| Android - Java&lt;br /&gt;
|-&lt;br /&gt;
| PFC para mejorar la gestión y el soporte de nuevos dispositivos&amp;lt;ref name=&amp;quot;trastos&amp;quot;/&amp;gt;&amp;lt;ref&amp;gt;https://lists.guifi.net/pipermail/guifi-rdes/2012-June/024570.html&amp;lt;/ref&amp;gt;[https://lists.guifi.net/pipermail/guifi-rdes/2012-June/024782.html] [http://terrassa.guifi.net/pfc_guifi_albertsarle/exposicio.html].&lt;br /&gt;
| [[Usuario:Albir|Albert Sarle]]&lt;br /&gt;
| 2012&lt;br /&gt;
| UAB&lt;br /&gt;
| Memoria en catalán&lt;br /&gt;
| [https://gitorious.org/~albertsarle/guifi/albertsarle-drupal-guifi_pfc Repositorio] [http://dl.dropbox.com/u/1834023/PFC_guifinet_AlbertSarle.pdf Memoria] [http://terrassa.guifi.net/pfc_guifi_albertsarle/exposicio.html Presentación HTML]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| PFC sobre el desarrollo del firmware [[Quick Mesh Project]] (QMP)&lt;br /&gt;
| [[Usuario:Hakais|Pau Escrich]]&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| Memoria en inglés&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://qmp.cat/ Sitio web del proyecto] [http://upcommons.upc.edu/pfc/handle/2099.1/14103] [http://qmp.cat/documents/11 Tesis - Documentación técnica] {{en}}&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Sistema de servidores [[VoIP]] del proyecto guifi.net&lt;br /&gt;
| Tomás Velázquez García&lt;br /&gt;
| -&lt;br /&gt;
| UAB&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://ddd.uab.cat/record/70278?ln=ca]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Millora de la gestió d’una xarxa WiFi: Guifi.net&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/3798]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Wifi mesh network nodes on guifi.net &lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/7383]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Estudi i propostes de millora de la xarxa Guifi.net (I)&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/4622]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Estudio y propuestas de mejora de la red GUIFI.NET (II)&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/4623]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Scalability study of Guifi.net and mesh networks&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/11580]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Protocolos de encaminamiento en redes inalámbricas mesh: un estudio teórico y experimental&lt;br /&gt;
| Albert Batiste Troyano&lt;br /&gt;
| 2011&lt;br /&gt;
| UOC / US&lt;br /&gt;
| Español&lt;br /&gt;
| [http://openaccess.uoc.edu/webapps/o2/bitstream/10609/8164/1/abatistet_TFM_0611.pdf]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Mejora de la aplicación de mapas de Guifi.net&amp;lt;ref&amp;gt;https://lists.guifi.net/pipermail/guifi-webdev/2012-July/001830.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
| David Rubio Miguélez&lt;br /&gt;
| 2012&lt;br /&gt;
| UJI&lt;br /&gt;
| Español&lt;br /&gt;
| [https://www.dropbox.com/s/974exzldfrno1wb/proyecto.pdf Memoria]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Perspectiva psicosocial ecológica del proyecto: la red social virtual abierta, libre y neutral basada en infraestructura&lt;br /&gt;
| Jordi Paradís Medina&lt;br /&gt;
| 2012&lt;br /&gt;
| UAB&lt;br /&gt;
| Catalán&lt;br /&gt;
| [http://generatech.org/sites/default/files/guifinet_social_ecologic.pdf Trabajo de fin de grado en psicología]&lt;br /&gt;
| Creative Commons 3.0 BY-NC-SA&lt;br /&gt;
| [http://psicovirtual.uab.cat/treballgrau/ocs/index.php/tfgpsico/tfg12/paper/view/25]&lt;br /&gt;
| Visió autoetnogràfica i holística d'aquest projecte tecnosocial, que inclou la descripció d'un seguit de dificultats detectades alhora de voler formar-ne part, en general i des de una casa apartada a la muntanya del Montnegre al Maresme Nord.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Servei SNPServices amb notificacio [[Monitor]]&lt;br /&gt;
|David Pérez Martorell&lt;br /&gt;
| 2013&lt;br /&gt;
|UOC&lt;br /&gt;
|Català&lt;br /&gt;
| Projecte Servei_de_notificació_d'alertes.odt‎&lt;br /&gt;
| Creative Commons 3.0 BY-NC-SA&lt;br /&gt;
|Presentacio [http://www.kaltura.com/index.php/kwidget/wid/_403921/uiconf_id/4438451/entry_id/1_hnw62y1i]&lt;br /&gt;
i Demostracio [http://www.kaltura.com/index.php/kwidget/wid/_403921/uiconf_id/4438451/entry_id/1_l68vxblh]&lt;br /&gt;
|Programes que amplien el servei SNPServices. Fa ping als nodes del grup de nodes del servidor d gràfics i informa al servidor web de incidencies. El servidor web envia correus als responsables&lt;br /&gt;
&amp;lt;!-- * ''No hay ninguno de momento. ¿Te animas a hacer el próximo?'' --&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ideas &amp;lt;ref&amp;gt;{{MM|url=https://lists.guifi.net/pipermail/guifi-usuaris/2012-March/018102.html|list=Usuaris}}&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
* Repetir algo de http://upcommons.upc.edu/pfc/handle/2099.1/11081 (sobre el orden &amp;quot;de entrada&amp;quot; de los paquetes ad-hoc vs infraestructura en un mismo canal)&lt;br /&gt;
* Plugins BGP-(OLSR/BATMAN/BMX)&lt;br /&gt;
&lt;br /&gt;
=== Personas del guifibages a finales de 2009 propusieron ===&lt;br /&gt;
* Evaluar el rendimiento de OLSR y compararlo con otros protocolos de enrutamiento dinámico. Buscar qué significan todos los parámetros de configuración y optimizar el rendimiento en guifibages.&lt;br /&gt;
* Estudiar el driver madwifi y optimizar el rendimiento en las condiciones guifibages (iría ligado con el anterior en un posible proyecto: &amp;quot;Optimización de guifibages: madwifi + OLSR&amp;quot;.&lt;br /&gt;
* Sistema de visualización en tiempo real de la calidad del enlace integrado en los mapas de Guifi.net a partir del plugin olsr-dot-draw/olsr-txtinfo.&lt;br /&gt;
* Creación de un testbed openwrt + mesh en la UPC: que el proyectista monte en la universidad una serie de radios dispersos por los edificios que se puedan poner en marcha, para y configurar desde un servidor &amp;quot;central&amp;quot;.&lt;br /&gt;
* Es un tipo de &amp;quot;encargo&amp;quot; que nos hemos tomado de la [[Open Spectrum Alliance]]. Se trataría de evaluar la ocupación de las frecuencias de TV (analógica y TDT) para averiguar los &amp;quot;espacios en blanco&amp;quot; de una zona.&lt;br /&gt;
* [https://lists.guifi.net/pipermail/guifi-rdes/2011-November/022064.html] [https://lists.guifi.net/pipermail/guifi-rdes/2011-November/022066.html]&lt;br /&gt;
&lt;br /&gt;
== Véase también ==&lt;br /&gt;
* [[Google Summer of Code]]&lt;br /&gt;
* [[Publicaciones]]&lt;br /&gt;
&lt;br /&gt;
== Referencias ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enlaces externos ==&lt;br /&gt;
* http://guifi.net/ca/node/3496 {{ca}}&lt;br /&gt;
* http://guifi.net/ca/ProjectesInvestigacio {{ca}}&lt;br /&gt;
* [http://ddd.uab.cat/search?ln=ca&amp;amp;as=1&amp;amp;m1=a&amp;amp;p1=guifi&amp;amp;f1=title&amp;amp;op1=a&amp;amp;m2=a&amp;amp;p2=&amp;amp;f2=codititulacio&amp;amp;op2=a&amp;amp;m3=a&amp;amp;p3=&amp;amp;f3=year&amp;amp;action_search=Cerca&amp;amp;c=Dip%C3%B2sit+Digital+de+Documents+de+la+UAB&amp;amp;sf=&amp;amp;so=a&amp;amp;rm=&amp;amp;rg=10&amp;amp;sc=1&amp;amp;of=hb Depósito Digital de Documentos de la UAB: guifi]&lt;br /&gt;
* [http://upcommons.upc.edu/pfc/simple-search?query=guifi Trabajos académicos UPC: guifi], upcommons&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Material académico]]&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/Archivo:Servei_de_notificaci%C3%B3_d%27alertes.odt</id>
		<title>Archivo:Servei de notificació d'alertes.odt</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/Archivo:Servei_de_notificaci%C3%B3_d%27alertes.odt"/>
				<updated>2013-06-23T13:21:07Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: Projecte de ampliacio de servei SNPServics amb la notificació per correu de alertes a administradors dels dispositius&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Projecte de ampliacio de servei SNPServics amb la notificació per correu de alertes a administradors dels dispositius&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/Proyecto_de_Fin_de_Carrera</id>
		<title>Proyecto de Fin de Carrera</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/Proyecto_de_Fin_de_Carrera"/>
				<updated>2013-06-23T13:17:16Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: /* Acabados */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Archivo:Graduate_award.svg|right|200px]]&lt;br /&gt;
&lt;br /&gt;
A menudo&amp;lt;ref name=&amp;quot;trastos&amp;quot;&amp;gt;https://lists.guifi.net/pipermail/guifi-rdes/2011-November/022033.html&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://lists.guifi.net/pipermail/guifi-usuaris/2012-March/018092.html&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://lists.guifi.net/pipermail/guifi-webdev/2012-March/001769.html&amp;lt;/ref&amp;gt;, estudiantes o investigadores contactan con la comunidad de Guifi.net porque desean realizar proyectos de investigación, '''Proyectos de Fin de Carrera''' (PFC) o de final de ciclo  CFGS relacionados con la red Guifi.net o que puedan ayudar a su expansión.&lt;br /&gt;
&lt;br /&gt;
Los proyectos o trabajos no tienen porqué ser únicamente '''técnicos''', de informática o telecomunicaciones. Dentro de Guifi.net también tienen cabida proyectos y trabajos de carácter '''legal''', '''social''', '''psicológico''', '''publicidad''', de '''contenidos'''..., etc.&lt;br /&gt;
&lt;br /&gt;
Si estás interesado/a, lo mejor es que contactes con nosotros a través de la [[lista de correo]] de desarrollo ('''guifi-rdes''').&lt;br /&gt;
&lt;br /&gt;
== Proyectos ==&lt;br /&gt;
&lt;br /&gt;
=== En desarrollo ===&lt;br /&gt;
* [[Monitor]], por David Pérez Martorell (Máster de Software Libre, UOC)&lt;br /&gt;
&amp;lt;!-- * ''No hay ninguno de momento. ¿Te animas a hacer el próximo?'' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Acabados ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; &amp;lt;!-- style=&amp;quot;text-align:right&amp;quot; --&amp;gt;&lt;br /&gt;
|- style=&amp;quot;background:#ececec;&amp;quot;&lt;br /&gt;
! Nombre&lt;br /&gt;
! Autor/a&lt;br /&gt;
! Año&lt;br /&gt;
! Centro de estudios&lt;br /&gt;
! Idioma&lt;br /&gt;
! Descarga&lt;br /&gt;
! Licencia&lt;br /&gt;
! Página web&lt;br /&gt;
! Comentario&lt;br /&gt;
|-&lt;br /&gt;
| Gestión Ciudadana de la Tecnología: Una aproximación desde los Science and Technology Studies a las redes wifi y la governance urbana a través de guifi.net&lt;br /&gt;
| Yann Bona Beauvois&lt;br /&gt;
| -&lt;br /&gt;
| UAB&lt;br /&gt;
| Español&lt;br /&gt;
| [[:Archivo:Gestion_Ciudadana_de_la_Tecnologia.pdf|PDF]]&lt;br /&gt;
| -&lt;br /&gt;
| [http://ddd.uab.cat/record/70077?ln=ca] [http://psicologiasocial.uab.es/athenea/index.php/atheneaDigital/article/view/849]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| [[Utilidades Guifi.net]] y [[GuifiManage]]&lt;br /&gt;
| [[Usuario:Ganon|Isidro Manzano Navaza]].&lt;br /&gt;
| 2012&lt;br /&gt;
| [http://www.escoladeltreball.org Escola del Treball de Barcelona]&lt;br /&gt;
| Catalan, castellano e ingles&lt;br /&gt;
| [https://gitorious.org/caixa-d-eines-de-guifi-net/caixa-d-eines-de-guifi-net Repositorio]&lt;br /&gt;
| GPL el código, CC-by los diagramas y GNU FDL la documentación.&lt;br /&gt;
| -&lt;br /&gt;
| Android - Java&lt;br /&gt;
|-&lt;br /&gt;
| PFC para mejorar la gestión y el soporte de nuevos dispositivos&amp;lt;ref name=&amp;quot;trastos&amp;quot;/&amp;gt;&amp;lt;ref&amp;gt;https://lists.guifi.net/pipermail/guifi-rdes/2012-June/024570.html&amp;lt;/ref&amp;gt;[https://lists.guifi.net/pipermail/guifi-rdes/2012-June/024782.html] [http://terrassa.guifi.net/pfc_guifi_albertsarle/exposicio.html].&lt;br /&gt;
| [[Usuario:Albir|Albert Sarle]]&lt;br /&gt;
| 2012&lt;br /&gt;
| UAB&lt;br /&gt;
| Memoria en catalán&lt;br /&gt;
| [https://gitorious.org/~albertsarle/guifi/albertsarle-drupal-guifi_pfc Repositorio] [http://dl.dropbox.com/u/1834023/PFC_guifinet_AlbertSarle.pdf Memoria] [http://terrassa.guifi.net/pfc_guifi_albertsarle/exposicio.html Presentación HTML]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| PFC sobre el desarrollo del firmware [[Quick Mesh Project]] (QMP)&lt;br /&gt;
| [[Usuario:Hakais|Pau Escrich]]&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| Memoria en inglés&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://qmp.cat/ Sitio web del proyecto] [http://upcommons.upc.edu/pfc/handle/2099.1/14103] [http://qmp.cat/documents/11 Tesis - Documentación técnica] {{en}}&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Sistema de servidores [[VoIP]] del proyecto guifi.net&lt;br /&gt;
| Tomás Velázquez García&lt;br /&gt;
| -&lt;br /&gt;
| UAB&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://ddd.uab.cat/record/70278?ln=ca]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Millora de la gestió d’una xarxa WiFi: Guifi.net&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/3798]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Wifi mesh network nodes on guifi.net &lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/7383]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Estudi i propostes de millora de la xarxa Guifi.net (I)&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/4622]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Estudio y propuestas de mejora de la red GUIFI.NET (II)&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/4623]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Scalability study of Guifi.net and mesh networks&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/11580]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Protocolos de encaminamiento en redes inalámbricas mesh: un estudio teórico y experimental&lt;br /&gt;
| Albert Batiste Troyano&lt;br /&gt;
| 2011&lt;br /&gt;
| UOC / US&lt;br /&gt;
| Español&lt;br /&gt;
| [http://openaccess.uoc.edu/webapps/o2/bitstream/10609/8164/1/abatistet_TFM_0611.pdf]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Mejora de la aplicación de mapas de Guifi.net&amp;lt;ref&amp;gt;https://lists.guifi.net/pipermail/guifi-webdev/2012-July/001830.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
| David Rubio Miguélez&lt;br /&gt;
| 2012&lt;br /&gt;
| UJI&lt;br /&gt;
| Español&lt;br /&gt;
| [https://www.dropbox.com/s/974exzldfrno1wb/proyecto.pdf Memoria]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Perspectiva psicosocial ecológica del proyecto: la red social virtual abierta, libre y neutral basada en infraestructura&lt;br /&gt;
| Jordi Paradís Medina&lt;br /&gt;
| 2012&lt;br /&gt;
| UAB&lt;br /&gt;
| Catalán&lt;br /&gt;
| [http://generatech.org/sites/default/files/guifinet_social_ecologic.pdf Trabajo de fin de grado en psicología]&lt;br /&gt;
| Creative Commons 3.0 BY-NC-SA&lt;br /&gt;
| [http://psicovirtual.uab.cat/treballgrau/ocs/index.php/tfgpsico/tfg12/paper/view/25]&lt;br /&gt;
| Visió autoetnogràfica i holística d'aquest projecte tecnosocial, que inclou la descripció d'un seguit de dificultats detectades alhora de voler formar-ne part, en general i des de una casa apartada a la muntanya del Montnegre al Maresme Nord.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Servei SNPServices amb notificacio [[Monitor]]&lt;br /&gt;
|David Pérez Martorell&lt;br /&gt;
| 2013&lt;br /&gt;
|UOC&lt;br /&gt;
|Català&lt;br /&gt;
|Presentacio [http://www.kaltura.com/index.php/kwidget/wid/_403921/uiconf_id/4438451/entry_id/1_hnw62y1i]&lt;br /&gt;
i Demostracio [http://www.kaltura.com/index.php/kwidget/wid/_403921/uiconf_id/4438451/entry_id/1_l68vxblh]&lt;br /&gt;
| Creative Commons 3.0 BY-NC-SA&lt;br /&gt;
|Programes que amplien el servei SNPServices. Fa ping als nodes del grup de nodes del servidor d gràfics i informa al servidor web de incidencies. El servidor web envia correus als responsables&lt;br /&gt;
&amp;lt;!-- * ''No hay ninguno de momento. ¿Te animas a hacer el próximo?'' --&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ideas &amp;lt;ref&amp;gt;{{MM|url=https://lists.guifi.net/pipermail/guifi-usuaris/2012-March/018102.html|list=Usuaris}}&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
* Repetir algo de http://upcommons.upc.edu/pfc/handle/2099.1/11081 (sobre el orden &amp;quot;de entrada&amp;quot; de los paquetes ad-hoc vs infraestructura en un mismo canal)&lt;br /&gt;
* Plugins BGP-(OLSR/BATMAN/BMX)&lt;br /&gt;
&lt;br /&gt;
=== Personas del guifibages a finales de 2009 propusieron ===&lt;br /&gt;
* Evaluar el rendimiento de OLSR y compararlo con otros protocolos de enrutamiento dinámico. Buscar qué significan todos los parámetros de configuración y optimizar el rendimiento en guifibages.&lt;br /&gt;
* Estudiar el driver madwifi y optimizar el rendimiento en las condiciones guifibages (iría ligado con el anterior en un posible proyecto: &amp;quot;Optimización de guifibages: madwifi + OLSR&amp;quot;.&lt;br /&gt;
* Sistema de visualización en tiempo real de la calidad del enlace integrado en los mapas de Guifi.net a partir del plugin olsr-dot-draw/olsr-txtinfo.&lt;br /&gt;
* Creación de un testbed openwrt + mesh en la UPC: que el proyectista monte en la universidad una serie de radios dispersos por los edificios que se puedan poner en marcha, para y configurar desde un servidor &amp;quot;central&amp;quot;.&lt;br /&gt;
* Es un tipo de &amp;quot;encargo&amp;quot; que nos hemos tomado de la [[Open Spectrum Alliance]]. Se trataría de evaluar la ocupación de las frecuencias de TV (analógica y TDT) para averiguar los &amp;quot;espacios en blanco&amp;quot; de una zona.&lt;br /&gt;
* [https://lists.guifi.net/pipermail/guifi-rdes/2011-November/022064.html] [https://lists.guifi.net/pipermail/guifi-rdes/2011-November/022066.html]&lt;br /&gt;
&lt;br /&gt;
== Véase también ==&lt;br /&gt;
* [[Google Summer of Code]]&lt;br /&gt;
* [[Publicaciones]]&lt;br /&gt;
&lt;br /&gt;
== Referencias ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enlaces externos ==&lt;br /&gt;
* http://guifi.net/ca/node/3496 {{ca}}&lt;br /&gt;
* http://guifi.net/ca/ProjectesInvestigacio {{ca}}&lt;br /&gt;
* [http://ddd.uab.cat/search?ln=ca&amp;amp;as=1&amp;amp;m1=a&amp;amp;p1=guifi&amp;amp;f1=title&amp;amp;op1=a&amp;amp;m2=a&amp;amp;p2=&amp;amp;f2=codititulacio&amp;amp;op2=a&amp;amp;m3=a&amp;amp;p3=&amp;amp;f3=year&amp;amp;action_search=Cerca&amp;amp;c=Dip%C3%B2sit+Digital+de+Documents+de+la+UAB&amp;amp;sf=&amp;amp;so=a&amp;amp;rm=&amp;amp;rg=10&amp;amp;sc=1&amp;amp;of=hb Depósito Digital de Documentos de la UAB: guifi]&lt;br /&gt;
* [http://upcommons.upc.edu/pfc/simple-search?query=guifi Trabajos académicos UPC: guifi], upcommons&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Material académico]]&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/Proyecto_de_Fin_de_Carrera</id>
		<title>Proyecto de Fin de Carrera</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/Proyecto_de_Fin_de_Carrera"/>
				<updated>2013-06-23T13:16:36Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: /* Personas del guifibages a finales de 2009 propusieron */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Archivo:Graduate_award.svg|right|200px]]&lt;br /&gt;
&lt;br /&gt;
A menudo&amp;lt;ref name=&amp;quot;trastos&amp;quot;&amp;gt;https://lists.guifi.net/pipermail/guifi-rdes/2011-November/022033.html&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://lists.guifi.net/pipermail/guifi-usuaris/2012-March/018092.html&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://lists.guifi.net/pipermail/guifi-webdev/2012-March/001769.html&amp;lt;/ref&amp;gt;, estudiantes o investigadores contactan con la comunidad de Guifi.net porque desean realizar proyectos de investigación, '''Proyectos de Fin de Carrera''' (PFC) o de final de ciclo  CFGS relacionados con la red Guifi.net o que puedan ayudar a su expansión.&lt;br /&gt;
&lt;br /&gt;
Los proyectos o trabajos no tienen porqué ser únicamente '''técnicos''', de informática o telecomunicaciones. Dentro de Guifi.net también tienen cabida proyectos y trabajos de carácter '''legal''', '''social''', '''psicológico''', '''publicidad''', de '''contenidos'''..., etc.&lt;br /&gt;
&lt;br /&gt;
Si estás interesado/a, lo mejor es que contactes con nosotros a través de la [[lista de correo]] de desarrollo ('''guifi-rdes''').&lt;br /&gt;
&lt;br /&gt;
== Proyectos ==&lt;br /&gt;
&lt;br /&gt;
=== En desarrollo ===&lt;br /&gt;
* [[Monitor]], por David Pérez Martorell (Máster de Software Libre, UOC)&lt;br /&gt;
&amp;lt;!-- * ''No hay ninguno de momento. ¿Te animas a hacer el próximo?'' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Acabados ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; &amp;lt;!-- style=&amp;quot;text-align:right&amp;quot; --&amp;gt;&lt;br /&gt;
|- style=&amp;quot;background:#ececec;&amp;quot;&lt;br /&gt;
! Nombre&lt;br /&gt;
! Autor/a&lt;br /&gt;
! Año&lt;br /&gt;
! Centro de estudios&lt;br /&gt;
! Idioma&lt;br /&gt;
! Descarga&lt;br /&gt;
! Licencia&lt;br /&gt;
! Página web&lt;br /&gt;
! Comentario&lt;br /&gt;
|-&lt;br /&gt;
| Gestión Ciudadana de la Tecnología: Una aproximación desde los Science and Technology Studies a las redes wifi y la governance urbana a través de guifi.net&lt;br /&gt;
| Yann Bona Beauvois&lt;br /&gt;
| -&lt;br /&gt;
| UAB&lt;br /&gt;
| Español&lt;br /&gt;
| [[:Archivo:Gestion_Ciudadana_de_la_Tecnologia.pdf|PDF]]&lt;br /&gt;
| -&lt;br /&gt;
| [http://ddd.uab.cat/record/70077?ln=ca] [http://psicologiasocial.uab.es/athenea/index.php/atheneaDigital/article/view/849]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| [[Utilidades Guifi.net]] y [[GuifiManage]]&lt;br /&gt;
| [[Usuario:Ganon|Isidro Manzano Navaza]].&lt;br /&gt;
| 2012&lt;br /&gt;
| [http://www.escoladeltreball.org Escola del Treball de Barcelona]&lt;br /&gt;
| Catalan, castellano e ingles&lt;br /&gt;
| [https://gitorious.org/caixa-d-eines-de-guifi-net/caixa-d-eines-de-guifi-net Repositorio]&lt;br /&gt;
| GPL el código, CC-by los diagramas y GNU FDL la documentación.&lt;br /&gt;
| -&lt;br /&gt;
| Android - Java&lt;br /&gt;
|-&lt;br /&gt;
| PFC para mejorar la gestión y el soporte de nuevos dispositivos&amp;lt;ref name=&amp;quot;trastos&amp;quot;/&amp;gt;&amp;lt;ref&amp;gt;https://lists.guifi.net/pipermail/guifi-rdes/2012-June/024570.html&amp;lt;/ref&amp;gt;[https://lists.guifi.net/pipermail/guifi-rdes/2012-June/024782.html] [http://terrassa.guifi.net/pfc_guifi_albertsarle/exposicio.html].&lt;br /&gt;
| [[Usuario:Albir|Albert Sarle]]&lt;br /&gt;
| 2012&lt;br /&gt;
| UAB&lt;br /&gt;
| Memoria en catalán&lt;br /&gt;
| [https://gitorious.org/~albertsarle/guifi/albertsarle-drupal-guifi_pfc Repositorio] [http://dl.dropbox.com/u/1834023/PFC_guifinet_AlbertSarle.pdf Memoria] [http://terrassa.guifi.net/pfc_guifi_albertsarle/exposicio.html Presentación HTML]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| PFC sobre el desarrollo del firmware [[Quick Mesh Project]] (QMP)&lt;br /&gt;
| [[Usuario:Hakais|Pau Escrich]]&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| Memoria en inglés&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://qmp.cat/ Sitio web del proyecto] [http://upcommons.upc.edu/pfc/handle/2099.1/14103] [http://qmp.cat/documents/11 Tesis - Documentación técnica] {{en}}&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Sistema de servidores [[VoIP]] del proyecto guifi.net&lt;br /&gt;
| Tomás Velázquez García&lt;br /&gt;
| -&lt;br /&gt;
| UAB&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://ddd.uab.cat/record/70278?ln=ca]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Millora de la gestió d’una xarxa WiFi: Guifi.net&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/3798]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Wifi mesh network nodes on guifi.net &lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/7383]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Estudi i propostes de millora de la xarxa Guifi.net (I)&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/4622]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Estudio y propuestas de mejora de la red GUIFI.NET (II)&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/4623]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Scalability study of Guifi.net and mesh networks&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/11580]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Protocolos de encaminamiento en redes inalámbricas mesh: un estudio teórico y experimental&lt;br /&gt;
| Albert Batiste Troyano&lt;br /&gt;
| 2011&lt;br /&gt;
| UOC / US&lt;br /&gt;
| Español&lt;br /&gt;
| [http://openaccess.uoc.edu/webapps/o2/bitstream/10609/8164/1/abatistet_TFM_0611.pdf]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Mejora de la aplicación de mapas de Guifi.net&amp;lt;ref&amp;gt;https://lists.guifi.net/pipermail/guifi-webdev/2012-July/001830.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
| David Rubio Miguélez&lt;br /&gt;
| 2012&lt;br /&gt;
| UJI&lt;br /&gt;
| Español&lt;br /&gt;
| [https://www.dropbox.com/s/974exzldfrno1wb/proyecto.pdf Memoria]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Perspectiva psicosocial ecológica del proyecto: la red social virtual abierta, libre y neutral basada en infraestructura&lt;br /&gt;
| Jordi Paradís Medina&lt;br /&gt;
| 2012&lt;br /&gt;
| UAB&lt;br /&gt;
| Catalán&lt;br /&gt;
| [http://generatech.org/sites/default/files/guifinet_social_ecologic.pdf Trabajo de fin de grado en psicología]&lt;br /&gt;
| Creative Commons 3.0 BY-NC-SA&lt;br /&gt;
| [http://psicovirtual.uab.cat/treballgrau/ocs/index.php/tfgpsico/tfg12/paper/view/25]&lt;br /&gt;
| Visió autoetnogràfica i holística d'aquest projecte tecnosocial, que inclou la descripció d'un seguit de dificultats detectades alhora de voler formar-ne part, en general i des de una casa apartada a la muntanya del Montnegre al Maresme Nord.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Servei SNPServices amb notificacio [[Monitor]]&lt;br /&gt;
|David Pérez Martorell&lt;br /&gt;
| 2013&lt;br /&gt;
|UOC&lt;br /&gt;
|Català&lt;br /&gt;
|document, presentacio i video demo&lt;br /&gt;
| Creative Commons 3.0 BY-NC-SA&lt;br /&gt;
|Programes que amplien el servei SNPServices. Fa ping als nodes del grup de nodes del servidor d gràfics i informa al servidor web de incidencies. El servidor web envia correus als responsables&lt;br /&gt;
&amp;lt;!-- * ''No hay ninguno de momento. ¿Te animas a hacer el próximo?'' --&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ideas &amp;lt;ref&amp;gt;{{MM|url=https://lists.guifi.net/pipermail/guifi-usuaris/2012-March/018102.html|list=Usuaris}}&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
* Repetir algo de http://upcommons.upc.edu/pfc/handle/2099.1/11081 (sobre el orden &amp;quot;de entrada&amp;quot; de los paquetes ad-hoc vs infraestructura en un mismo canal)&lt;br /&gt;
* Plugins BGP-(OLSR/BATMAN/BMX)&lt;br /&gt;
&lt;br /&gt;
=== Personas del guifibages a finales de 2009 propusieron ===&lt;br /&gt;
* Evaluar el rendimiento de OLSR y compararlo con otros protocolos de enrutamiento dinámico. Buscar qué significan todos los parámetros de configuración y optimizar el rendimiento en guifibages.&lt;br /&gt;
* Estudiar el driver madwifi y optimizar el rendimiento en las condiciones guifibages (iría ligado con el anterior en un posible proyecto: &amp;quot;Optimización de guifibages: madwifi + OLSR&amp;quot;.&lt;br /&gt;
* Sistema de visualización en tiempo real de la calidad del enlace integrado en los mapas de Guifi.net a partir del plugin olsr-dot-draw/olsr-txtinfo.&lt;br /&gt;
* Creación de un testbed openwrt + mesh en la UPC: que el proyectista monte en la universidad una serie de radios dispersos por los edificios que se puedan poner en marcha, para y configurar desde un servidor &amp;quot;central&amp;quot;.&lt;br /&gt;
* Es un tipo de &amp;quot;encargo&amp;quot; que nos hemos tomado de la [[Open Spectrum Alliance]]. Se trataría de evaluar la ocupación de las frecuencias de TV (analógica y TDT) para averiguar los &amp;quot;espacios en blanco&amp;quot; de una zona.&lt;br /&gt;
* [https://lists.guifi.net/pipermail/guifi-rdes/2011-November/022064.html] [https://lists.guifi.net/pipermail/guifi-rdes/2011-November/022066.html]&lt;br /&gt;
&lt;br /&gt;
== Véase también ==&lt;br /&gt;
* [[Google Summer of Code]]&lt;br /&gt;
* [[Publicaciones]]&lt;br /&gt;
&lt;br /&gt;
== Referencias ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enlaces externos ==&lt;br /&gt;
* http://guifi.net/ca/node/3496 {{ca}}&lt;br /&gt;
* http://guifi.net/ca/ProjectesInvestigacio {{ca}}&lt;br /&gt;
* [http://ddd.uab.cat/search?ln=ca&amp;amp;as=1&amp;amp;m1=a&amp;amp;p1=guifi&amp;amp;f1=title&amp;amp;op1=a&amp;amp;m2=a&amp;amp;p2=&amp;amp;f2=codititulacio&amp;amp;op2=a&amp;amp;m3=a&amp;amp;p3=&amp;amp;f3=year&amp;amp;action_search=Cerca&amp;amp;c=Dip%C3%B2sit+Digital+de+Documents+de+la+UAB&amp;amp;sf=&amp;amp;so=a&amp;amp;rm=&amp;amp;rg=10&amp;amp;sc=1&amp;amp;of=hb Depósito Digital de Documentos de la UAB: guifi]&lt;br /&gt;
* [http://upcommons.upc.edu/pfc/simple-search?query=guifi Trabajos académicos UPC: guifi], upcommons&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Material académico]]&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/Proyecto_de_Fin_de_Carrera</id>
		<title>Proyecto de Fin de Carrera</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/Proyecto_de_Fin_de_Carrera"/>
				<updated>2013-06-23T13:15:58Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: /* Personas del guifibages a finales de 2009 propusieron */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Archivo:Graduate_award.svg|right|200px]]&lt;br /&gt;
&lt;br /&gt;
A menudo&amp;lt;ref name=&amp;quot;trastos&amp;quot;&amp;gt;https://lists.guifi.net/pipermail/guifi-rdes/2011-November/022033.html&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://lists.guifi.net/pipermail/guifi-usuaris/2012-March/018092.html&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://lists.guifi.net/pipermail/guifi-webdev/2012-March/001769.html&amp;lt;/ref&amp;gt;, estudiantes o investigadores contactan con la comunidad de Guifi.net porque desean realizar proyectos de investigación, '''Proyectos de Fin de Carrera''' (PFC) o de final de ciclo  CFGS relacionados con la red Guifi.net o que puedan ayudar a su expansión.&lt;br /&gt;
&lt;br /&gt;
Los proyectos o trabajos no tienen porqué ser únicamente '''técnicos''', de informática o telecomunicaciones. Dentro de Guifi.net también tienen cabida proyectos y trabajos de carácter '''legal''', '''social''', '''psicológico''', '''publicidad''', de '''contenidos'''..., etc.&lt;br /&gt;
&lt;br /&gt;
Si estás interesado/a, lo mejor es que contactes con nosotros a través de la [[lista de correo]] de desarrollo ('''guifi-rdes''').&lt;br /&gt;
&lt;br /&gt;
== Proyectos ==&lt;br /&gt;
&lt;br /&gt;
=== En desarrollo ===&lt;br /&gt;
* [[Monitor]], por David Pérez Martorell (Máster de Software Libre, UOC)&lt;br /&gt;
&amp;lt;!-- * ''No hay ninguno de momento. ¿Te animas a hacer el próximo?'' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Acabados ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; &amp;lt;!-- style=&amp;quot;text-align:right&amp;quot; --&amp;gt;&lt;br /&gt;
|- style=&amp;quot;background:#ececec;&amp;quot;&lt;br /&gt;
! Nombre&lt;br /&gt;
! Autor/a&lt;br /&gt;
! Año&lt;br /&gt;
! Centro de estudios&lt;br /&gt;
! Idioma&lt;br /&gt;
! Descarga&lt;br /&gt;
! Licencia&lt;br /&gt;
! Página web&lt;br /&gt;
! Comentario&lt;br /&gt;
|-&lt;br /&gt;
| Gestión Ciudadana de la Tecnología: Una aproximación desde los Science and Technology Studies a las redes wifi y la governance urbana a través de guifi.net&lt;br /&gt;
| Yann Bona Beauvois&lt;br /&gt;
| -&lt;br /&gt;
| UAB&lt;br /&gt;
| Español&lt;br /&gt;
| [[:Archivo:Gestion_Ciudadana_de_la_Tecnologia.pdf|PDF]]&lt;br /&gt;
| -&lt;br /&gt;
| [http://ddd.uab.cat/record/70077?ln=ca] [http://psicologiasocial.uab.es/athenea/index.php/atheneaDigital/article/view/849]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| [[Utilidades Guifi.net]] y [[GuifiManage]]&lt;br /&gt;
| [[Usuario:Ganon|Isidro Manzano Navaza]].&lt;br /&gt;
| 2012&lt;br /&gt;
| [http://www.escoladeltreball.org Escola del Treball de Barcelona]&lt;br /&gt;
| Catalan, castellano e ingles&lt;br /&gt;
| [https://gitorious.org/caixa-d-eines-de-guifi-net/caixa-d-eines-de-guifi-net Repositorio]&lt;br /&gt;
| GPL el código, CC-by los diagramas y GNU FDL la documentación.&lt;br /&gt;
| -&lt;br /&gt;
| Android - Java&lt;br /&gt;
|-&lt;br /&gt;
| PFC para mejorar la gestión y el soporte de nuevos dispositivos&amp;lt;ref name=&amp;quot;trastos&amp;quot;/&amp;gt;&amp;lt;ref&amp;gt;https://lists.guifi.net/pipermail/guifi-rdes/2012-June/024570.html&amp;lt;/ref&amp;gt;[https://lists.guifi.net/pipermail/guifi-rdes/2012-June/024782.html] [http://terrassa.guifi.net/pfc_guifi_albertsarle/exposicio.html].&lt;br /&gt;
| [[Usuario:Albir|Albert Sarle]]&lt;br /&gt;
| 2012&lt;br /&gt;
| UAB&lt;br /&gt;
| Memoria en catalán&lt;br /&gt;
| [https://gitorious.org/~albertsarle/guifi/albertsarle-drupal-guifi_pfc Repositorio] [http://dl.dropbox.com/u/1834023/PFC_guifinet_AlbertSarle.pdf Memoria] [http://terrassa.guifi.net/pfc_guifi_albertsarle/exposicio.html Presentación HTML]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| PFC sobre el desarrollo del firmware [[Quick Mesh Project]] (QMP)&lt;br /&gt;
| [[Usuario:Hakais|Pau Escrich]]&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| Memoria en inglés&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://qmp.cat/ Sitio web del proyecto] [http://upcommons.upc.edu/pfc/handle/2099.1/14103] [http://qmp.cat/documents/11 Tesis - Documentación técnica] {{en}}&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Sistema de servidores [[VoIP]] del proyecto guifi.net&lt;br /&gt;
| Tomás Velázquez García&lt;br /&gt;
| -&lt;br /&gt;
| UAB&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://ddd.uab.cat/record/70278?ln=ca]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Millora de la gestió d’una xarxa WiFi: Guifi.net&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/3798]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Wifi mesh network nodes on guifi.net &lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/7383]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Estudi i propostes de millora de la xarxa Guifi.net (I)&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/4622]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Estudio y propuestas de mejora de la red GUIFI.NET (II)&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/4623]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Scalability study of Guifi.net and mesh networks&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/11580]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Protocolos de encaminamiento en redes inalámbricas mesh: un estudio teórico y experimental&lt;br /&gt;
| Albert Batiste Troyano&lt;br /&gt;
| 2011&lt;br /&gt;
| UOC / US&lt;br /&gt;
| Español&lt;br /&gt;
| [http://openaccess.uoc.edu/webapps/o2/bitstream/10609/8164/1/abatistet_TFM_0611.pdf]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Mejora de la aplicación de mapas de Guifi.net&amp;lt;ref&amp;gt;https://lists.guifi.net/pipermail/guifi-webdev/2012-July/001830.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
| David Rubio Miguélez&lt;br /&gt;
| 2012&lt;br /&gt;
| UJI&lt;br /&gt;
| Español&lt;br /&gt;
| [https://www.dropbox.com/s/974exzldfrno1wb/proyecto.pdf Memoria]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Perspectiva psicosocial ecológica del proyecto: la red social virtual abierta, libre y neutral basada en infraestructura&lt;br /&gt;
| Jordi Paradís Medina&lt;br /&gt;
| 2012&lt;br /&gt;
| UAB&lt;br /&gt;
| Catalán&lt;br /&gt;
| [http://generatech.org/sites/default/files/guifinet_social_ecologic.pdf Trabajo de fin de grado en psicología]&lt;br /&gt;
| Creative Commons 3.0 BY-NC-SA&lt;br /&gt;
| [http://psicovirtual.uab.cat/treballgrau/ocs/index.php/tfgpsico/tfg12/paper/view/25]&lt;br /&gt;
| Visió autoetnogràfica i holística d'aquest projecte tecnosocial, que inclou la descripció d'un seguit de dificultats detectades alhora de voler formar-ne part, en general i des de una casa apartada a la muntanya del Montnegre al Maresme Nord.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Servei SNPServices amb notificacio [[Monitor]]&lt;br /&gt;
|David Pérez Martorell&lt;br /&gt;
| 2013&lt;br /&gt;
|UOC&lt;br /&gt;
|Català&lt;br /&gt;
|document, presentacio i video demo&lt;br /&gt;
| Creative Commons 3.0 BY-NC-SA&lt;br /&gt;
|Programes que amplien el servei SNPServices. Fa ping als nodes del grup de nodes del servidor d gràfics i informa al servidor web de incidencies. El servidor web envia correus als responsables&lt;br /&gt;
&amp;lt;!-- * ''No hay ninguno de momento. ¿Te animas a hacer el próximo?'' --&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ideas &amp;lt;ref&amp;gt;{{MM|url=https://lists.guifi.net/pipermail/guifi-usuaris/2012-March/018102.html|list=Usuaris}}&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
* Repetir algo de http://upcommons.upc.edu/pfc/handle/2099.1/11081 (sobre el orden &amp;quot;de entrada&amp;quot; de los paquetes ad-hoc vs infraestructura en un mismo canal)&lt;br /&gt;
* Plugins BGP-(OLSR/BATMAN/BMX)&lt;br /&gt;
&lt;br /&gt;
=== Personas del guifibages a finales de 2009 propusieron ===&lt;br /&gt;
* Evaluar el rendimiento de OLSR y compararlo con otros protocolos de enrutamiento dinámico. Buscar qué significan todos los parámetros de configuración y optimizar el rendimiento en guifibages.&lt;br /&gt;
* Estudiar el driver madwifi y optimizar el rendimiento en las condiciones guifibages (iría ligado con el anterior en un posible proyecto: &amp;quot;Optimización de guifibages: madwifi + OLSR&amp;quot;.&lt;br /&gt;
* Sistema de visualización en tiempo real de la calidad del enlace integrado en los mapas de Guifi.net a partir del plugin olsr-dot-draw/olsr-txtinfo.&lt;br /&gt;
* Creación de un testbed openwrt + mesh en la UPC: que el proyectista monte en la universidad una serie de radios dispersos por los edificios que se puedan poner en marcha, para y configurar desde un servidor &amp;quot;central&amp;quot;.&lt;br /&gt;
* Es un tipo de &amp;quot;encargo&amp;quot; que nos hemos tomado de la [[Open Spectrum Alliance]]. Se trataría de evaluar la ocupación de las frecuencias de TV (analógica y TDT) para averiguar los &amp;quot;espacios en blanco&amp;quot; de una zona.&lt;br /&gt;
* [https://lists.guifi.net/pipermail/guifi-rdes/2011-November/022064.html] [https://lists.guifi.net/pipermail/guifi-rdes/2011-November/022066.html]&lt;br /&gt;
* Presentacio servei SNPServices amb notificacio [http://www.kaltura.com/index.php/kwidget/wid/_403921/uiconf_id/4438451/entry_id/1_hnw62y1i]&lt;br /&gt;
* Demostracio del servei SNPServices amb notificacio [http://www.kaltura.com/index.php/kwidget/wid/_403921/uiconf_id/4438451/entry_id/1_l68vxblh]&lt;br /&gt;
&lt;br /&gt;
== Véase también ==&lt;br /&gt;
* [[Google Summer of Code]]&lt;br /&gt;
* [[Publicaciones]]&lt;br /&gt;
&lt;br /&gt;
== Referencias ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enlaces externos ==&lt;br /&gt;
* http://guifi.net/ca/node/3496 {{ca}}&lt;br /&gt;
* http://guifi.net/ca/ProjectesInvestigacio {{ca}}&lt;br /&gt;
* [http://ddd.uab.cat/search?ln=ca&amp;amp;as=1&amp;amp;m1=a&amp;amp;p1=guifi&amp;amp;f1=title&amp;amp;op1=a&amp;amp;m2=a&amp;amp;p2=&amp;amp;f2=codititulacio&amp;amp;op2=a&amp;amp;m3=a&amp;amp;p3=&amp;amp;f3=year&amp;amp;action_search=Cerca&amp;amp;c=Dip%C3%B2sit+Digital+de+Documents+de+la+UAB&amp;amp;sf=&amp;amp;so=a&amp;amp;rm=&amp;amp;rg=10&amp;amp;sc=1&amp;amp;of=hb Depósito Digital de Documentos de la UAB: guifi]&lt;br /&gt;
* [http://upcommons.upc.edu/pfc/simple-search?query=guifi Trabajos académicos UPC: guifi], upcommons&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Material académico]]&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/Proyecto_de_Fin_de_Carrera</id>
		<title>Proyecto de Fin de Carrera</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/Proyecto_de_Fin_de_Carrera"/>
				<updated>2013-06-23T13:15:46Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: /* Personas del guifibages a finales de 2009 propusieron */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Archivo:Graduate_award.svg|right|200px]]&lt;br /&gt;
&lt;br /&gt;
A menudo&amp;lt;ref name=&amp;quot;trastos&amp;quot;&amp;gt;https://lists.guifi.net/pipermail/guifi-rdes/2011-November/022033.html&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://lists.guifi.net/pipermail/guifi-usuaris/2012-March/018092.html&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://lists.guifi.net/pipermail/guifi-webdev/2012-March/001769.html&amp;lt;/ref&amp;gt;, estudiantes o investigadores contactan con la comunidad de Guifi.net porque desean realizar proyectos de investigación, '''Proyectos de Fin de Carrera''' (PFC) o de final de ciclo  CFGS relacionados con la red Guifi.net o que puedan ayudar a su expansión.&lt;br /&gt;
&lt;br /&gt;
Los proyectos o trabajos no tienen porqué ser únicamente '''técnicos''', de informática o telecomunicaciones. Dentro de Guifi.net también tienen cabida proyectos y trabajos de carácter '''legal''', '''social''', '''psicológico''', '''publicidad''', de '''contenidos'''..., etc.&lt;br /&gt;
&lt;br /&gt;
Si estás interesado/a, lo mejor es que contactes con nosotros a través de la [[lista de correo]] de desarrollo ('''guifi-rdes''').&lt;br /&gt;
&lt;br /&gt;
== Proyectos ==&lt;br /&gt;
&lt;br /&gt;
=== En desarrollo ===&lt;br /&gt;
* [[Monitor]], por David Pérez Martorell (Máster de Software Libre, UOC)&lt;br /&gt;
&amp;lt;!-- * ''No hay ninguno de momento. ¿Te animas a hacer el próximo?'' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Acabados ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; &amp;lt;!-- style=&amp;quot;text-align:right&amp;quot; --&amp;gt;&lt;br /&gt;
|- style=&amp;quot;background:#ececec;&amp;quot;&lt;br /&gt;
! Nombre&lt;br /&gt;
! Autor/a&lt;br /&gt;
! Año&lt;br /&gt;
! Centro de estudios&lt;br /&gt;
! Idioma&lt;br /&gt;
! Descarga&lt;br /&gt;
! Licencia&lt;br /&gt;
! Página web&lt;br /&gt;
! Comentario&lt;br /&gt;
|-&lt;br /&gt;
| Gestión Ciudadana de la Tecnología: Una aproximación desde los Science and Technology Studies a las redes wifi y la governance urbana a través de guifi.net&lt;br /&gt;
| Yann Bona Beauvois&lt;br /&gt;
| -&lt;br /&gt;
| UAB&lt;br /&gt;
| Español&lt;br /&gt;
| [[:Archivo:Gestion_Ciudadana_de_la_Tecnologia.pdf|PDF]]&lt;br /&gt;
| -&lt;br /&gt;
| [http://ddd.uab.cat/record/70077?ln=ca] [http://psicologiasocial.uab.es/athenea/index.php/atheneaDigital/article/view/849]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| [[Utilidades Guifi.net]] y [[GuifiManage]]&lt;br /&gt;
| [[Usuario:Ganon|Isidro Manzano Navaza]].&lt;br /&gt;
| 2012&lt;br /&gt;
| [http://www.escoladeltreball.org Escola del Treball de Barcelona]&lt;br /&gt;
| Catalan, castellano e ingles&lt;br /&gt;
| [https://gitorious.org/caixa-d-eines-de-guifi-net/caixa-d-eines-de-guifi-net Repositorio]&lt;br /&gt;
| GPL el código, CC-by los diagramas y GNU FDL la documentación.&lt;br /&gt;
| -&lt;br /&gt;
| Android - Java&lt;br /&gt;
|-&lt;br /&gt;
| PFC para mejorar la gestión y el soporte de nuevos dispositivos&amp;lt;ref name=&amp;quot;trastos&amp;quot;/&amp;gt;&amp;lt;ref&amp;gt;https://lists.guifi.net/pipermail/guifi-rdes/2012-June/024570.html&amp;lt;/ref&amp;gt;[https://lists.guifi.net/pipermail/guifi-rdes/2012-June/024782.html] [http://terrassa.guifi.net/pfc_guifi_albertsarle/exposicio.html].&lt;br /&gt;
| [[Usuario:Albir|Albert Sarle]]&lt;br /&gt;
| 2012&lt;br /&gt;
| UAB&lt;br /&gt;
| Memoria en catalán&lt;br /&gt;
| [https://gitorious.org/~albertsarle/guifi/albertsarle-drupal-guifi_pfc Repositorio] [http://dl.dropbox.com/u/1834023/PFC_guifinet_AlbertSarle.pdf Memoria] [http://terrassa.guifi.net/pfc_guifi_albertsarle/exposicio.html Presentación HTML]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| PFC sobre el desarrollo del firmware [[Quick Mesh Project]] (QMP)&lt;br /&gt;
| [[Usuario:Hakais|Pau Escrich]]&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| Memoria en inglés&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://qmp.cat/ Sitio web del proyecto] [http://upcommons.upc.edu/pfc/handle/2099.1/14103] [http://qmp.cat/documents/11 Tesis - Documentación técnica] {{en}}&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Sistema de servidores [[VoIP]] del proyecto guifi.net&lt;br /&gt;
| Tomás Velázquez García&lt;br /&gt;
| -&lt;br /&gt;
| UAB&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://ddd.uab.cat/record/70278?ln=ca]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Millora de la gestió d’una xarxa WiFi: Guifi.net&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/3798]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Wifi mesh network nodes on guifi.net &lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/7383]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Estudi i propostes de millora de la xarxa Guifi.net (I)&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/4622]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Estudio y propuestas de mejora de la red GUIFI.NET (II)&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/4623]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Scalability study of Guifi.net and mesh networks&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/11580]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Protocolos de encaminamiento en redes inalámbricas mesh: un estudio teórico y experimental&lt;br /&gt;
| Albert Batiste Troyano&lt;br /&gt;
| 2011&lt;br /&gt;
| UOC / US&lt;br /&gt;
| Español&lt;br /&gt;
| [http://openaccess.uoc.edu/webapps/o2/bitstream/10609/8164/1/abatistet_TFM_0611.pdf]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Mejora de la aplicación de mapas de Guifi.net&amp;lt;ref&amp;gt;https://lists.guifi.net/pipermail/guifi-webdev/2012-July/001830.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
| David Rubio Miguélez&lt;br /&gt;
| 2012&lt;br /&gt;
| UJI&lt;br /&gt;
| Español&lt;br /&gt;
| [https://www.dropbox.com/s/974exzldfrno1wb/proyecto.pdf Memoria]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Perspectiva psicosocial ecológica del proyecto: la red social virtual abierta, libre y neutral basada en infraestructura&lt;br /&gt;
| Jordi Paradís Medina&lt;br /&gt;
| 2012&lt;br /&gt;
| UAB&lt;br /&gt;
| Catalán&lt;br /&gt;
| [http://generatech.org/sites/default/files/guifinet_social_ecologic.pdf Trabajo de fin de grado en psicología]&lt;br /&gt;
| Creative Commons 3.0 BY-NC-SA&lt;br /&gt;
| [http://psicovirtual.uab.cat/treballgrau/ocs/index.php/tfgpsico/tfg12/paper/view/25]&lt;br /&gt;
| Visió autoetnogràfica i holística d'aquest projecte tecnosocial, que inclou la descripció d'un seguit de dificultats detectades alhora de voler formar-ne part, en general i des de una casa apartada a la muntanya del Montnegre al Maresme Nord.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Servei SNPServices amb notificacio [[Monitor]]&lt;br /&gt;
|David Pérez Martorell&lt;br /&gt;
| 2013&lt;br /&gt;
|UOC&lt;br /&gt;
|Català&lt;br /&gt;
|document, presentacio i video demo&lt;br /&gt;
| Creative Commons 3.0 BY-NC-SA&lt;br /&gt;
|Programes que amplien el servei SNPServices. Fa ping als nodes del grup de nodes del servidor d gràfics i informa al servidor web de incidencies. El servidor web envia correus als responsables&lt;br /&gt;
&amp;lt;!-- * ''No hay ninguno de momento. ¿Te animas a hacer el próximo?'' --&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ideas &amp;lt;ref&amp;gt;{{MM|url=https://lists.guifi.net/pipermail/guifi-usuaris/2012-March/018102.html|list=Usuaris}}&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
* Repetir algo de http://upcommons.upc.edu/pfc/handle/2099.1/11081 (sobre el orden &amp;quot;de entrada&amp;quot; de los paquetes ad-hoc vs infraestructura en un mismo canal)&lt;br /&gt;
* Plugins BGP-(OLSR/BATMAN/BMX)&lt;br /&gt;
&lt;br /&gt;
=== Personas del guifibages a finales de 2009 propusieron ===&lt;br /&gt;
* Evaluar el rendimiento de OLSR y compararlo con otros protocolos de enrutamiento dinámico. Buscar qué significan todos los parámetros de configuración y optimizar el rendimiento en guifibages.&lt;br /&gt;
* Estudiar el driver madwifi y optimizar el rendimiento en las condiciones guifibages (iría ligado con el anterior en un posible proyecto: &amp;quot;Optimización de guifibages: madwifi + OLSR&amp;quot;.&lt;br /&gt;
* Sistema de visualización en tiempo real de la calidad del enlace integrado en los mapas de Guifi.net a partir del plugin olsr-dot-draw/olsr-txtinfo.&lt;br /&gt;
* Creación de un testbed openwrt + mesh en la UPC: que el proyectista monte en la universidad una serie de radios dispersos por los edificios que se puedan poner en marcha, para y configurar desde un servidor &amp;quot;central&amp;quot;.&lt;br /&gt;
* Es un tipo de &amp;quot;encargo&amp;quot; que nos hemos tomado de la [[Open Spectrum Alliance]]. Se trataría de evaluar la ocupación de las frecuencias de TV (analógica y TDT) para averiguar los &amp;quot;espacios en blanco&amp;quot; de una zona.&lt;br /&gt;
* [https://lists.guifi.net/pipermail/guifi-rdes/2011-November/022064.html] [https://lists.guifi.net/pipermail/guifi-rdes/2011-November/022066.html]&lt;br /&gt;
* Presentacio servei SNPServices amb notificacio [http://www.kaltura.com/index.php/kwidget/wid/_403921/uiconf_id/4438451/entry_id/1_hnw62y1i]&lt;br /&gt;
* Demostracio del servei SNPServices amb notificacio &lt;br /&gt;
[http://www.kaltura.com/index.php/kwidget/wid/_403921/uiconf_id/4438451/entry_id/1_l68vxblh]&lt;br /&gt;
&lt;br /&gt;
== Véase también ==&lt;br /&gt;
* [[Google Summer of Code]]&lt;br /&gt;
* [[Publicaciones]]&lt;br /&gt;
&lt;br /&gt;
== Referencias ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enlaces externos ==&lt;br /&gt;
* http://guifi.net/ca/node/3496 {{ca}}&lt;br /&gt;
* http://guifi.net/ca/ProjectesInvestigacio {{ca}}&lt;br /&gt;
* [http://ddd.uab.cat/search?ln=ca&amp;amp;as=1&amp;amp;m1=a&amp;amp;p1=guifi&amp;amp;f1=title&amp;amp;op1=a&amp;amp;m2=a&amp;amp;p2=&amp;amp;f2=codititulacio&amp;amp;op2=a&amp;amp;m3=a&amp;amp;p3=&amp;amp;f3=year&amp;amp;action_search=Cerca&amp;amp;c=Dip%C3%B2sit+Digital+de+Documents+de+la+UAB&amp;amp;sf=&amp;amp;so=a&amp;amp;rm=&amp;amp;rg=10&amp;amp;sc=1&amp;amp;of=hb Depósito Digital de Documentos de la UAB: guifi]&lt;br /&gt;
* [http://upcommons.upc.edu/pfc/simple-search?query=guifi Trabajos académicos UPC: guifi], upcommons&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Material académico]]&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/Proyecto_de_Fin_de_Carrera</id>
		<title>Proyecto de Fin de Carrera</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/Proyecto_de_Fin_de_Carrera"/>
				<updated>2013-06-23T13:15:30Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: /* Personas del guifibages a finales de 2009 propusieron */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Archivo:Graduate_award.svg|right|200px]]&lt;br /&gt;
&lt;br /&gt;
A menudo&amp;lt;ref name=&amp;quot;trastos&amp;quot;&amp;gt;https://lists.guifi.net/pipermail/guifi-rdes/2011-November/022033.html&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://lists.guifi.net/pipermail/guifi-usuaris/2012-March/018092.html&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://lists.guifi.net/pipermail/guifi-webdev/2012-March/001769.html&amp;lt;/ref&amp;gt;, estudiantes o investigadores contactan con la comunidad de Guifi.net porque desean realizar proyectos de investigación, '''Proyectos de Fin de Carrera''' (PFC) o de final de ciclo  CFGS relacionados con la red Guifi.net o que puedan ayudar a su expansión.&lt;br /&gt;
&lt;br /&gt;
Los proyectos o trabajos no tienen porqué ser únicamente '''técnicos''', de informática o telecomunicaciones. Dentro de Guifi.net también tienen cabida proyectos y trabajos de carácter '''legal''', '''social''', '''psicológico''', '''publicidad''', de '''contenidos'''..., etc.&lt;br /&gt;
&lt;br /&gt;
Si estás interesado/a, lo mejor es que contactes con nosotros a través de la [[lista de correo]] de desarrollo ('''guifi-rdes''').&lt;br /&gt;
&lt;br /&gt;
== Proyectos ==&lt;br /&gt;
&lt;br /&gt;
=== En desarrollo ===&lt;br /&gt;
* [[Monitor]], por David Pérez Martorell (Máster de Software Libre, UOC)&lt;br /&gt;
&amp;lt;!-- * ''No hay ninguno de momento. ¿Te animas a hacer el próximo?'' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Acabados ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; &amp;lt;!-- style=&amp;quot;text-align:right&amp;quot; --&amp;gt;&lt;br /&gt;
|- style=&amp;quot;background:#ececec;&amp;quot;&lt;br /&gt;
! Nombre&lt;br /&gt;
! Autor/a&lt;br /&gt;
! Año&lt;br /&gt;
! Centro de estudios&lt;br /&gt;
! Idioma&lt;br /&gt;
! Descarga&lt;br /&gt;
! Licencia&lt;br /&gt;
! Página web&lt;br /&gt;
! Comentario&lt;br /&gt;
|-&lt;br /&gt;
| Gestión Ciudadana de la Tecnología: Una aproximación desde los Science and Technology Studies a las redes wifi y la governance urbana a través de guifi.net&lt;br /&gt;
| Yann Bona Beauvois&lt;br /&gt;
| -&lt;br /&gt;
| UAB&lt;br /&gt;
| Español&lt;br /&gt;
| [[:Archivo:Gestion_Ciudadana_de_la_Tecnologia.pdf|PDF]]&lt;br /&gt;
| -&lt;br /&gt;
| [http://ddd.uab.cat/record/70077?ln=ca] [http://psicologiasocial.uab.es/athenea/index.php/atheneaDigital/article/view/849]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| [[Utilidades Guifi.net]] y [[GuifiManage]]&lt;br /&gt;
| [[Usuario:Ganon|Isidro Manzano Navaza]].&lt;br /&gt;
| 2012&lt;br /&gt;
| [http://www.escoladeltreball.org Escola del Treball de Barcelona]&lt;br /&gt;
| Catalan, castellano e ingles&lt;br /&gt;
| [https://gitorious.org/caixa-d-eines-de-guifi-net/caixa-d-eines-de-guifi-net Repositorio]&lt;br /&gt;
| GPL el código, CC-by los diagramas y GNU FDL la documentación.&lt;br /&gt;
| -&lt;br /&gt;
| Android - Java&lt;br /&gt;
|-&lt;br /&gt;
| PFC para mejorar la gestión y el soporte de nuevos dispositivos&amp;lt;ref name=&amp;quot;trastos&amp;quot;/&amp;gt;&amp;lt;ref&amp;gt;https://lists.guifi.net/pipermail/guifi-rdes/2012-June/024570.html&amp;lt;/ref&amp;gt;[https://lists.guifi.net/pipermail/guifi-rdes/2012-June/024782.html] [http://terrassa.guifi.net/pfc_guifi_albertsarle/exposicio.html].&lt;br /&gt;
| [[Usuario:Albir|Albert Sarle]]&lt;br /&gt;
| 2012&lt;br /&gt;
| UAB&lt;br /&gt;
| Memoria en catalán&lt;br /&gt;
| [https://gitorious.org/~albertsarle/guifi/albertsarle-drupal-guifi_pfc Repositorio] [http://dl.dropbox.com/u/1834023/PFC_guifinet_AlbertSarle.pdf Memoria] [http://terrassa.guifi.net/pfc_guifi_albertsarle/exposicio.html Presentación HTML]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| PFC sobre el desarrollo del firmware [[Quick Mesh Project]] (QMP)&lt;br /&gt;
| [[Usuario:Hakais|Pau Escrich]]&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| Memoria en inglés&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://qmp.cat/ Sitio web del proyecto] [http://upcommons.upc.edu/pfc/handle/2099.1/14103] [http://qmp.cat/documents/11 Tesis - Documentación técnica] {{en}}&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Sistema de servidores [[VoIP]] del proyecto guifi.net&lt;br /&gt;
| Tomás Velázquez García&lt;br /&gt;
| -&lt;br /&gt;
| UAB&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://ddd.uab.cat/record/70278?ln=ca]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Millora de la gestió d’una xarxa WiFi: Guifi.net&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/3798]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Wifi mesh network nodes on guifi.net &lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/7383]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Estudi i propostes de millora de la xarxa Guifi.net (I)&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/4622]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Estudio y propuestas de mejora de la red GUIFI.NET (II)&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/4623]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Scalability study of Guifi.net and mesh networks&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/11580]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Protocolos de encaminamiento en redes inalámbricas mesh: un estudio teórico y experimental&lt;br /&gt;
| Albert Batiste Troyano&lt;br /&gt;
| 2011&lt;br /&gt;
| UOC / US&lt;br /&gt;
| Español&lt;br /&gt;
| [http://openaccess.uoc.edu/webapps/o2/bitstream/10609/8164/1/abatistet_TFM_0611.pdf]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Mejora de la aplicación de mapas de Guifi.net&amp;lt;ref&amp;gt;https://lists.guifi.net/pipermail/guifi-webdev/2012-July/001830.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
| David Rubio Miguélez&lt;br /&gt;
| 2012&lt;br /&gt;
| UJI&lt;br /&gt;
| Español&lt;br /&gt;
| [https://www.dropbox.com/s/974exzldfrno1wb/proyecto.pdf Memoria]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Perspectiva psicosocial ecológica del proyecto: la red social virtual abierta, libre y neutral basada en infraestructura&lt;br /&gt;
| Jordi Paradís Medina&lt;br /&gt;
| 2012&lt;br /&gt;
| UAB&lt;br /&gt;
| Catalán&lt;br /&gt;
| [http://generatech.org/sites/default/files/guifinet_social_ecologic.pdf Trabajo de fin de grado en psicología]&lt;br /&gt;
| Creative Commons 3.0 BY-NC-SA&lt;br /&gt;
| [http://psicovirtual.uab.cat/treballgrau/ocs/index.php/tfgpsico/tfg12/paper/view/25]&lt;br /&gt;
| Visió autoetnogràfica i holística d'aquest projecte tecnosocial, que inclou la descripció d'un seguit de dificultats detectades alhora de voler formar-ne part, en general i des de una casa apartada a la muntanya del Montnegre al Maresme Nord.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Servei SNPServices amb notificacio [[Monitor]]&lt;br /&gt;
|David Pérez Martorell&lt;br /&gt;
| 2013&lt;br /&gt;
|UOC&lt;br /&gt;
|Català&lt;br /&gt;
|document, presentacio i video demo&lt;br /&gt;
| Creative Commons 3.0 BY-NC-SA&lt;br /&gt;
|Programes que amplien el servei SNPServices. Fa ping als nodes del grup de nodes del servidor d gràfics i informa al servidor web de incidencies. El servidor web envia correus als responsables&lt;br /&gt;
&amp;lt;!-- * ''No hay ninguno de momento. ¿Te animas a hacer el próximo?'' --&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ideas &amp;lt;ref&amp;gt;{{MM|url=https://lists.guifi.net/pipermail/guifi-usuaris/2012-March/018102.html|list=Usuaris}}&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
* Repetir algo de http://upcommons.upc.edu/pfc/handle/2099.1/11081 (sobre el orden &amp;quot;de entrada&amp;quot; de los paquetes ad-hoc vs infraestructura en un mismo canal)&lt;br /&gt;
* Plugins BGP-(OLSR/BATMAN/BMX)&lt;br /&gt;
&lt;br /&gt;
=== Personas del guifibages a finales de 2009 propusieron ===&lt;br /&gt;
* Evaluar el rendimiento de OLSR y compararlo con otros protocolos de enrutamiento dinámico. Buscar qué significan todos los parámetros de configuración y optimizar el rendimiento en guifibages.&lt;br /&gt;
* Estudiar el driver madwifi y optimizar el rendimiento en las condiciones guifibages (iría ligado con el anterior en un posible proyecto: &amp;quot;Optimización de guifibages: madwifi + OLSR&amp;quot;.&lt;br /&gt;
* Sistema de visualización en tiempo real de la calidad del enlace integrado en los mapas de Guifi.net a partir del plugin olsr-dot-draw/olsr-txtinfo.&lt;br /&gt;
* Creación de un testbed openwrt + mesh en la UPC: que el proyectista monte en la universidad una serie de radios dispersos por los edificios que se puedan poner en marcha, para y configurar desde un servidor &amp;quot;central&amp;quot;.&lt;br /&gt;
* Es un tipo de &amp;quot;encargo&amp;quot; que nos hemos tomado de la [[Open Spectrum Alliance]]. Se trataría de evaluar la ocupación de las frecuencias de TV (analógica y TDT) para averiguar los &amp;quot;espacios en blanco&amp;quot; de una zona.&lt;br /&gt;
* [https://lists.guifi.net/pipermail/guifi-rdes/2011-November/022064.html] [https://lists.guifi.net/pipermail/guifi-rdes/2011-November/022066.html]&lt;br /&gt;
* Presentacio servei SNPServices amb notificacio [http://www.kaltura.com/index.php/kwidget/wid/_403921/uiconf_id/4438451/entry_id/1_hnw62y1i]&lt;br /&gt;
* Demostracio del servei SNPServices amb notificacio &lt;br /&gt;
http://www.kaltura.com/index.php/kwidget/wid/_403921/uiconf_id/4438451/entry_id/1_l68vxblh&lt;br /&gt;
&lt;br /&gt;
== Véase también ==&lt;br /&gt;
* [[Google Summer of Code]]&lt;br /&gt;
* [[Publicaciones]]&lt;br /&gt;
&lt;br /&gt;
== Referencias ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enlaces externos ==&lt;br /&gt;
* http://guifi.net/ca/node/3496 {{ca}}&lt;br /&gt;
* http://guifi.net/ca/ProjectesInvestigacio {{ca}}&lt;br /&gt;
* [http://ddd.uab.cat/search?ln=ca&amp;amp;as=1&amp;amp;m1=a&amp;amp;p1=guifi&amp;amp;f1=title&amp;amp;op1=a&amp;amp;m2=a&amp;amp;p2=&amp;amp;f2=codititulacio&amp;amp;op2=a&amp;amp;m3=a&amp;amp;p3=&amp;amp;f3=year&amp;amp;action_search=Cerca&amp;amp;c=Dip%C3%B2sit+Digital+de+Documents+de+la+UAB&amp;amp;sf=&amp;amp;so=a&amp;amp;rm=&amp;amp;rg=10&amp;amp;sc=1&amp;amp;of=hb Depósito Digital de Documentos de la UAB: guifi]&lt;br /&gt;
* [http://upcommons.upc.edu/pfc/simple-search?query=guifi Trabajos académicos UPC: guifi], upcommons&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Material académico]]&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/Proyecto_de_Fin_de_Carrera</id>
		<title>Proyecto de Fin de Carrera</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/Proyecto_de_Fin_de_Carrera"/>
				<updated>2013-06-23T13:14:25Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: /* Personas del guifibages a finales de 2009 propusieron */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Archivo:Graduate_award.svg|right|200px]]&lt;br /&gt;
&lt;br /&gt;
A menudo&amp;lt;ref name=&amp;quot;trastos&amp;quot;&amp;gt;https://lists.guifi.net/pipermail/guifi-rdes/2011-November/022033.html&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://lists.guifi.net/pipermail/guifi-usuaris/2012-March/018092.html&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://lists.guifi.net/pipermail/guifi-webdev/2012-March/001769.html&amp;lt;/ref&amp;gt;, estudiantes o investigadores contactan con la comunidad de Guifi.net porque desean realizar proyectos de investigación, '''Proyectos de Fin de Carrera''' (PFC) o de final de ciclo  CFGS relacionados con la red Guifi.net o que puedan ayudar a su expansión.&lt;br /&gt;
&lt;br /&gt;
Los proyectos o trabajos no tienen porqué ser únicamente '''técnicos''', de informática o telecomunicaciones. Dentro de Guifi.net también tienen cabida proyectos y trabajos de carácter '''legal''', '''social''', '''psicológico''', '''publicidad''', de '''contenidos'''..., etc.&lt;br /&gt;
&lt;br /&gt;
Si estás interesado/a, lo mejor es que contactes con nosotros a través de la [[lista de correo]] de desarrollo ('''guifi-rdes''').&lt;br /&gt;
&lt;br /&gt;
== Proyectos ==&lt;br /&gt;
&lt;br /&gt;
=== En desarrollo ===&lt;br /&gt;
* [[Monitor]], por David Pérez Martorell (Máster de Software Libre, UOC)&lt;br /&gt;
&amp;lt;!-- * ''No hay ninguno de momento. ¿Te animas a hacer el próximo?'' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Acabados ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; &amp;lt;!-- style=&amp;quot;text-align:right&amp;quot; --&amp;gt;&lt;br /&gt;
|- style=&amp;quot;background:#ececec;&amp;quot;&lt;br /&gt;
! Nombre&lt;br /&gt;
! Autor/a&lt;br /&gt;
! Año&lt;br /&gt;
! Centro de estudios&lt;br /&gt;
! Idioma&lt;br /&gt;
! Descarga&lt;br /&gt;
! Licencia&lt;br /&gt;
! Página web&lt;br /&gt;
! Comentario&lt;br /&gt;
|-&lt;br /&gt;
| Gestión Ciudadana de la Tecnología: Una aproximación desde los Science and Technology Studies a las redes wifi y la governance urbana a través de guifi.net&lt;br /&gt;
| Yann Bona Beauvois&lt;br /&gt;
| -&lt;br /&gt;
| UAB&lt;br /&gt;
| Español&lt;br /&gt;
| [[:Archivo:Gestion_Ciudadana_de_la_Tecnologia.pdf|PDF]]&lt;br /&gt;
| -&lt;br /&gt;
| [http://ddd.uab.cat/record/70077?ln=ca] [http://psicologiasocial.uab.es/athenea/index.php/atheneaDigital/article/view/849]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| [[Utilidades Guifi.net]] y [[GuifiManage]]&lt;br /&gt;
| [[Usuario:Ganon|Isidro Manzano Navaza]].&lt;br /&gt;
| 2012&lt;br /&gt;
| [http://www.escoladeltreball.org Escola del Treball de Barcelona]&lt;br /&gt;
| Catalan, castellano e ingles&lt;br /&gt;
| [https://gitorious.org/caixa-d-eines-de-guifi-net/caixa-d-eines-de-guifi-net Repositorio]&lt;br /&gt;
| GPL el código, CC-by los diagramas y GNU FDL la documentación.&lt;br /&gt;
| -&lt;br /&gt;
| Android - Java&lt;br /&gt;
|-&lt;br /&gt;
| PFC para mejorar la gestión y el soporte de nuevos dispositivos&amp;lt;ref name=&amp;quot;trastos&amp;quot;/&amp;gt;&amp;lt;ref&amp;gt;https://lists.guifi.net/pipermail/guifi-rdes/2012-June/024570.html&amp;lt;/ref&amp;gt;[https://lists.guifi.net/pipermail/guifi-rdes/2012-June/024782.html] [http://terrassa.guifi.net/pfc_guifi_albertsarle/exposicio.html].&lt;br /&gt;
| [[Usuario:Albir|Albert Sarle]]&lt;br /&gt;
| 2012&lt;br /&gt;
| UAB&lt;br /&gt;
| Memoria en catalán&lt;br /&gt;
| [https://gitorious.org/~albertsarle/guifi/albertsarle-drupal-guifi_pfc Repositorio] [http://dl.dropbox.com/u/1834023/PFC_guifinet_AlbertSarle.pdf Memoria] [http://terrassa.guifi.net/pfc_guifi_albertsarle/exposicio.html Presentación HTML]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| PFC sobre el desarrollo del firmware [[Quick Mesh Project]] (QMP)&lt;br /&gt;
| [[Usuario:Hakais|Pau Escrich]]&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| Memoria en inglés&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://qmp.cat/ Sitio web del proyecto] [http://upcommons.upc.edu/pfc/handle/2099.1/14103] [http://qmp.cat/documents/11 Tesis - Documentación técnica] {{en}}&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Sistema de servidores [[VoIP]] del proyecto guifi.net&lt;br /&gt;
| Tomás Velázquez García&lt;br /&gt;
| -&lt;br /&gt;
| UAB&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://ddd.uab.cat/record/70278?ln=ca]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Millora de la gestió d’una xarxa WiFi: Guifi.net&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/3798]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Wifi mesh network nodes on guifi.net &lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/7383]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Estudi i propostes de millora de la xarxa Guifi.net (I)&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/4622]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Estudio y propuestas de mejora de la red GUIFI.NET (II)&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/4623]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Scalability study of Guifi.net and mesh networks&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/11580]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Protocolos de encaminamiento en redes inalámbricas mesh: un estudio teórico y experimental&lt;br /&gt;
| Albert Batiste Troyano&lt;br /&gt;
| 2011&lt;br /&gt;
| UOC / US&lt;br /&gt;
| Español&lt;br /&gt;
| [http://openaccess.uoc.edu/webapps/o2/bitstream/10609/8164/1/abatistet_TFM_0611.pdf]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Mejora de la aplicación de mapas de Guifi.net&amp;lt;ref&amp;gt;https://lists.guifi.net/pipermail/guifi-webdev/2012-July/001830.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
| David Rubio Miguélez&lt;br /&gt;
| 2012&lt;br /&gt;
| UJI&lt;br /&gt;
| Español&lt;br /&gt;
| [https://www.dropbox.com/s/974exzldfrno1wb/proyecto.pdf Memoria]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Perspectiva psicosocial ecológica del proyecto: la red social virtual abierta, libre y neutral basada en infraestructura&lt;br /&gt;
| Jordi Paradís Medina&lt;br /&gt;
| 2012&lt;br /&gt;
| UAB&lt;br /&gt;
| Catalán&lt;br /&gt;
| [http://generatech.org/sites/default/files/guifinet_social_ecologic.pdf Trabajo de fin de grado en psicología]&lt;br /&gt;
| Creative Commons 3.0 BY-NC-SA&lt;br /&gt;
| [http://psicovirtual.uab.cat/treballgrau/ocs/index.php/tfgpsico/tfg12/paper/view/25]&lt;br /&gt;
| Visió autoetnogràfica i holística d'aquest projecte tecnosocial, que inclou la descripció d'un seguit de dificultats detectades alhora de voler formar-ne part, en general i des de una casa apartada a la muntanya del Montnegre al Maresme Nord.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Servei SNPServices amb notificacio [[Monitor]]&lt;br /&gt;
|David Pérez Martorell&lt;br /&gt;
| 2013&lt;br /&gt;
|UOC&lt;br /&gt;
|Català&lt;br /&gt;
|document, presentacio i video demo&lt;br /&gt;
| Creative Commons 3.0 BY-NC-SA&lt;br /&gt;
|Programes que amplien el servei SNPServices. Fa ping als nodes del grup de nodes del servidor d gràfics i informa al servidor web de incidencies. El servidor web envia correus als responsables&lt;br /&gt;
&amp;lt;!-- * ''No hay ninguno de momento. ¿Te animas a hacer el próximo?'' --&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ideas &amp;lt;ref&amp;gt;{{MM|url=https://lists.guifi.net/pipermail/guifi-usuaris/2012-March/018102.html|list=Usuaris}}&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
* Repetir algo de http://upcommons.upc.edu/pfc/handle/2099.1/11081 (sobre el orden &amp;quot;de entrada&amp;quot; de los paquetes ad-hoc vs infraestructura en un mismo canal)&lt;br /&gt;
* Plugins BGP-(OLSR/BATMAN/BMX)&lt;br /&gt;
&lt;br /&gt;
=== Personas del guifibages a finales de 2009 propusieron ===&lt;br /&gt;
* Evaluar el rendimiento de OLSR y compararlo con otros protocolos de enrutamiento dinámico. Buscar qué significan todos los parámetros de configuración y optimizar el rendimiento en guifibages.&lt;br /&gt;
* Estudiar el driver madwifi y optimizar el rendimiento en las condiciones guifibages (iría ligado con el anterior en un posible proyecto: &amp;quot;Optimización de guifibages: madwifi + OLSR&amp;quot;.&lt;br /&gt;
* Sistema de visualización en tiempo real de la calidad del enlace integrado en los mapas de Guifi.net a partir del plugin olsr-dot-draw/olsr-txtinfo.&lt;br /&gt;
* Creación de un testbed openwrt + mesh en la UPC: que el proyectista monte en la universidad una serie de radios dispersos por los edificios que se puedan poner en marcha, para y configurar desde un servidor &amp;quot;central&amp;quot;.&lt;br /&gt;
* Es un tipo de &amp;quot;encargo&amp;quot; que nos hemos tomado de la [[Open Spectrum Alliance]]. Se trataría de evaluar la ocupación de las frecuencias de TV (analógica y TDT) para averiguar los &amp;quot;espacios en blanco&amp;quot; de una zona.&lt;br /&gt;
* [https://lists.guifi.net/pipermail/guifi-rdes/2011-November/022064.html] [https://lists.guifi.net/pipermail/guifi-rdes/2011-November/022066.html]&lt;br /&gt;
* Presentacio servei SNPServices amb notificacio [http://www.kaltura.com/index.php/kwidget/wid/_403921/uiconf_id/4438451/entry_id/1_hnw62y1i]&lt;br /&gt;
&lt;br /&gt;
== Véase también ==&lt;br /&gt;
* [[Google Summer of Code]]&lt;br /&gt;
* [[Publicaciones]]&lt;br /&gt;
&lt;br /&gt;
== Referencias ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enlaces externos ==&lt;br /&gt;
* http://guifi.net/ca/node/3496 {{ca}}&lt;br /&gt;
* http://guifi.net/ca/ProjectesInvestigacio {{ca}}&lt;br /&gt;
* [http://ddd.uab.cat/search?ln=ca&amp;amp;as=1&amp;amp;m1=a&amp;amp;p1=guifi&amp;amp;f1=title&amp;amp;op1=a&amp;amp;m2=a&amp;amp;p2=&amp;amp;f2=codititulacio&amp;amp;op2=a&amp;amp;m3=a&amp;amp;p3=&amp;amp;f3=year&amp;amp;action_search=Cerca&amp;amp;c=Dip%C3%B2sit+Digital+de+Documents+de+la+UAB&amp;amp;sf=&amp;amp;so=a&amp;amp;rm=&amp;amp;rg=10&amp;amp;sc=1&amp;amp;of=hb Depósito Digital de Documentos de la UAB: guifi]&lt;br /&gt;
* [http://upcommons.upc.edu/pfc/simple-search?query=guifi Trabajos académicos UPC: guifi], upcommons&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Material académico]]&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/Proyecto_de_Fin_de_Carrera</id>
		<title>Proyecto de Fin de Carrera</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/Proyecto_de_Fin_de_Carrera"/>
				<updated>2013-06-23T13:11:00Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: /* Acabados */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Archivo:Graduate_award.svg|right|200px]]&lt;br /&gt;
&lt;br /&gt;
A menudo&amp;lt;ref name=&amp;quot;trastos&amp;quot;&amp;gt;https://lists.guifi.net/pipermail/guifi-rdes/2011-November/022033.html&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://lists.guifi.net/pipermail/guifi-usuaris/2012-March/018092.html&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://lists.guifi.net/pipermail/guifi-webdev/2012-March/001769.html&amp;lt;/ref&amp;gt;, estudiantes o investigadores contactan con la comunidad de Guifi.net porque desean realizar proyectos de investigación, '''Proyectos de Fin de Carrera''' (PFC) o de final de ciclo  CFGS relacionados con la red Guifi.net o que puedan ayudar a su expansión.&lt;br /&gt;
&lt;br /&gt;
Los proyectos o trabajos no tienen porqué ser únicamente '''técnicos''', de informática o telecomunicaciones. Dentro de Guifi.net también tienen cabida proyectos y trabajos de carácter '''legal''', '''social''', '''psicológico''', '''publicidad''', de '''contenidos'''..., etc.&lt;br /&gt;
&lt;br /&gt;
Si estás interesado/a, lo mejor es que contactes con nosotros a través de la [[lista de correo]] de desarrollo ('''guifi-rdes''').&lt;br /&gt;
&lt;br /&gt;
== Proyectos ==&lt;br /&gt;
&lt;br /&gt;
=== En desarrollo ===&lt;br /&gt;
* [[Monitor]], por David Pérez Martorell (Máster de Software Libre, UOC)&lt;br /&gt;
&amp;lt;!-- * ''No hay ninguno de momento. ¿Te animas a hacer el próximo?'' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Acabados ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; &amp;lt;!-- style=&amp;quot;text-align:right&amp;quot; --&amp;gt;&lt;br /&gt;
|- style=&amp;quot;background:#ececec;&amp;quot;&lt;br /&gt;
! Nombre&lt;br /&gt;
! Autor/a&lt;br /&gt;
! Año&lt;br /&gt;
! Centro de estudios&lt;br /&gt;
! Idioma&lt;br /&gt;
! Descarga&lt;br /&gt;
! Licencia&lt;br /&gt;
! Página web&lt;br /&gt;
! Comentario&lt;br /&gt;
|-&lt;br /&gt;
| Gestión Ciudadana de la Tecnología: Una aproximación desde los Science and Technology Studies a las redes wifi y la governance urbana a través de guifi.net&lt;br /&gt;
| Yann Bona Beauvois&lt;br /&gt;
| -&lt;br /&gt;
| UAB&lt;br /&gt;
| Español&lt;br /&gt;
| [[:Archivo:Gestion_Ciudadana_de_la_Tecnologia.pdf|PDF]]&lt;br /&gt;
| -&lt;br /&gt;
| [http://ddd.uab.cat/record/70077?ln=ca] [http://psicologiasocial.uab.es/athenea/index.php/atheneaDigital/article/view/849]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| [[Utilidades Guifi.net]] y [[GuifiManage]]&lt;br /&gt;
| [[Usuario:Ganon|Isidro Manzano Navaza]].&lt;br /&gt;
| 2012&lt;br /&gt;
| [http://www.escoladeltreball.org Escola del Treball de Barcelona]&lt;br /&gt;
| Catalan, castellano e ingles&lt;br /&gt;
| [https://gitorious.org/caixa-d-eines-de-guifi-net/caixa-d-eines-de-guifi-net Repositorio]&lt;br /&gt;
| GPL el código, CC-by los diagramas y GNU FDL la documentación.&lt;br /&gt;
| -&lt;br /&gt;
| Android - Java&lt;br /&gt;
|-&lt;br /&gt;
| PFC para mejorar la gestión y el soporte de nuevos dispositivos&amp;lt;ref name=&amp;quot;trastos&amp;quot;/&amp;gt;&amp;lt;ref&amp;gt;https://lists.guifi.net/pipermail/guifi-rdes/2012-June/024570.html&amp;lt;/ref&amp;gt;[https://lists.guifi.net/pipermail/guifi-rdes/2012-June/024782.html] [http://terrassa.guifi.net/pfc_guifi_albertsarle/exposicio.html].&lt;br /&gt;
| [[Usuario:Albir|Albert Sarle]]&lt;br /&gt;
| 2012&lt;br /&gt;
| UAB&lt;br /&gt;
| Memoria en catalán&lt;br /&gt;
| [https://gitorious.org/~albertsarle/guifi/albertsarle-drupal-guifi_pfc Repositorio] [http://dl.dropbox.com/u/1834023/PFC_guifinet_AlbertSarle.pdf Memoria] [http://terrassa.guifi.net/pfc_guifi_albertsarle/exposicio.html Presentación HTML]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| PFC sobre el desarrollo del firmware [[Quick Mesh Project]] (QMP)&lt;br /&gt;
| [[Usuario:Hakais|Pau Escrich]]&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| Memoria en inglés&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://qmp.cat/ Sitio web del proyecto] [http://upcommons.upc.edu/pfc/handle/2099.1/14103] [http://qmp.cat/documents/11 Tesis - Documentación técnica] {{en}}&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Sistema de servidores [[VoIP]] del proyecto guifi.net&lt;br /&gt;
| Tomás Velázquez García&lt;br /&gt;
| -&lt;br /&gt;
| UAB&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://ddd.uab.cat/record/70278?ln=ca]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Millora de la gestió d’una xarxa WiFi: Guifi.net&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/3798]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Wifi mesh network nodes on guifi.net &lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/7383]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Estudi i propostes de millora de la xarxa Guifi.net (I)&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/4622]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Estudio y propuestas de mejora de la red GUIFI.NET (II)&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/4623]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Scalability study of Guifi.net and mesh networks&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/11580]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Protocolos de encaminamiento en redes inalámbricas mesh: un estudio teórico y experimental&lt;br /&gt;
| Albert Batiste Troyano&lt;br /&gt;
| 2011&lt;br /&gt;
| UOC / US&lt;br /&gt;
| Español&lt;br /&gt;
| [http://openaccess.uoc.edu/webapps/o2/bitstream/10609/8164/1/abatistet_TFM_0611.pdf]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Mejora de la aplicación de mapas de Guifi.net&amp;lt;ref&amp;gt;https://lists.guifi.net/pipermail/guifi-webdev/2012-July/001830.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
| David Rubio Miguélez&lt;br /&gt;
| 2012&lt;br /&gt;
| UJI&lt;br /&gt;
| Español&lt;br /&gt;
| [https://www.dropbox.com/s/974exzldfrno1wb/proyecto.pdf Memoria]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Perspectiva psicosocial ecológica del proyecto: la red social virtual abierta, libre y neutral basada en infraestructura&lt;br /&gt;
| Jordi Paradís Medina&lt;br /&gt;
| 2012&lt;br /&gt;
| UAB&lt;br /&gt;
| Catalán&lt;br /&gt;
| [http://generatech.org/sites/default/files/guifinet_social_ecologic.pdf Trabajo de fin de grado en psicología]&lt;br /&gt;
| Creative Commons 3.0 BY-NC-SA&lt;br /&gt;
| [http://psicovirtual.uab.cat/treballgrau/ocs/index.php/tfgpsico/tfg12/paper/view/25]&lt;br /&gt;
| Visió autoetnogràfica i holística d'aquest projecte tecnosocial, que inclou la descripció d'un seguit de dificultats detectades alhora de voler formar-ne part, en general i des de una casa apartada a la muntanya del Montnegre al Maresme Nord.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Servei SNPServices amb notificacio [[Monitor]]&lt;br /&gt;
|David Pérez Martorell&lt;br /&gt;
| 2013&lt;br /&gt;
|UOC&lt;br /&gt;
|Català&lt;br /&gt;
|document, presentacio i video demo&lt;br /&gt;
| Creative Commons 3.0 BY-NC-SA&lt;br /&gt;
|Programes que amplien el servei SNPServices. Fa ping als nodes del grup de nodes del servidor d gràfics i informa al servidor web de incidencies. El servidor web envia correus als responsables&lt;br /&gt;
&amp;lt;!-- * ''No hay ninguno de momento. ¿Te animas a hacer el próximo?'' --&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ideas &amp;lt;ref&amp;gt;{{MM|url=https://lists.guifi.net/pipermail/guifi-usuaris/2012-March/018102.html|list=Usuaris}}&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
* Repetir algo de http://upcommons.upc.edu/pfc/handle/2099.1/11081 (sobre el orden &amp;quot;de entrada&amp;quot; de los paquetes ad-hoc vs infraestructura en un mismo canal)&lt;br /&gt;
* Plugins BGP-(OLSR/BATMAN/BMX)&lt;br /&gt;
&lt;br /&gt;
=== Personas del guifibages a finales de 2009 propusieron ===&lt;br /&gt;
* Evaluar el rendimiento de OLSR y compararlo con otros protocolos de enrutamiento dinámico. Buscar qué significan todos los parámetros de configuración y optimizar el rendimiento en guifibages.&lt;br /&gt;
* Estudiar el driver madwifi y optimizar el rendimiento en las condiciones guifibages (iría ligado con el anterior en un posible proyecto: &amp;quot;Optimización de guifibages: madwifi + OLSR&amp;quot;.&lt;br /&gt;
* Sistema de visualización en tiempo real de la calidad del enlace integrado en los mapas de Guifi.net a partir del plugin olsr-dot-draw/olsr-txtinfo.&lt;br /&gt;
* Creación de un testbed openwrt + mesh en la UPC: que el proyectista monte en la universidad una serie de radios dispersos por los edificios que se puedan poner en marcha, para y configurar desde un servidor &amp;quot;central&amp;quot;.&lt;br /&gt;
* Es un tipo de &amp;quot;encargo&amp;quot; que nos hemos tomado de la [[Open Spectrum Alliance]]. Se trataría de evaluar la ocupación de las frecuencias de TV (analógica y TDT) para averiguar los &amp;quot;espacios en blanco&amp;quot; de una zona.&lt;br /&gt;
* [https://lists.guifi.net/pipermail/guifi-rdes/2011-November/022064.html] [https://lists.guifi.net/pipermail/guifi-rdes/2011-November/022066.html]&lt;br /&gt;
&lt;br /&gt;
== Véase también ==&lt;br /&gt;
* [[Google Summer of Code]]&lt;br /&gt;
* [[Publicaciones]]&lt;br /&gt;
&lt;br /&gt;
== Referencias ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enlaces externos ==&lt;br /&gt;
* http://guifi.net/ca/node/3496 {{ca}}&lt;br /&gt;
* http://guifi.net/ca/ProjectesInvestigacio {{ca}}&lt;br /&gt;
* [http://ddd.uab.cat/search?ln=ca&amp;amp;as=1&amp;amp;m1=a&amp;amp;p1=guifi&amp;amp;f1=title&amp;amp;op1=a&amp;amp;m2=a&amp;amp;p2=&amp;amp;f2=codititulacio&amp;amp;op2=a&amp;amp;m3=a&amp;amp;p3=&amp;amp;f3=year&amp;amp;action_search=Cerca&amp;amp;c=Dip%C3%B2sit+Digital+de+Documents+de+la+UAB&amp;amp;sf=&amp;amp;so=a&amp;amp;rm=&amp;amp;rg=10&amp;amp;sc=1&amp;amp;of=hb Depósito Digital de Documentos de la UAB: guifi]&lt;br /&gt;
* [http://upcommons.upc.edu/pfc/simple-search?query=guifi Trabajos académicos UPC: guifi], upcommons&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Material académico]]&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/Proyecto_de_Fin_de_Carrera</id>
		<title>Proyecto de Fin de Carrera</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/Proyecto_de_Fin_de_Carrera"/>
				<updated>2013-06-23T13:10:02Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: /* Acabados */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Archivo:Graduate_award.svg|right|200px]]&lt;br /&gt;
&lt;br /&gt;
A menudo&amp;lt;ref name=&amp;quot;trastos&amp;quot;&amp;gt;https://lists.guifi.net/pipermail/guifi-rdes/2011-November/022033.html&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://lists.guifi.net/pipermail/guifi-usuaris/2012-March/018092.html&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://lists.guifi.net/pipermail/guifi-webdev/2012-March/001769.html&amp;lt;/ref&amp;gt;, estudiantes o investigadores contactan con la comunidad de Guifi.net porque desean realizar proyectos de investigación, '''Proyectos de Fin de Carrera''' (PFC) o de final de ciclo  CFGS relacionados con la red Guifi.net o que puedan ayudar a su expansión.&lt;br /&gt;
&lt;br /&gt;
Los proyectos o trabajos no tienen porqué ser únicamente '''técnicos''', de informática o telecomunicaciones. Dentro de Guifi.net también tienen cabida proyectos y trabajos de carácter '''legal''', '''social''', '''psicológico''', '''publicidad''', de '''contenidos'''..., etc.&lt;br /&gt;
&lt;br /&gt;
Si estás interesado/a, lo mejor es que contactes con nosotros a través de la [[lista de correo]] de desarrollo ('''guifi-rdes''').&lt;br /&gt;
&lt;br /&gt;
== Proyectos ==&lt;br /&gt;
&lt;br /&gt;
=== En desarrollo ===&lt;br /&gt;
* [[Monitor]], por David Pérez Martorell (Máster de Software Libre, UOC)&lt;br /&gt;
&amp;lt;!-- * ''No hay ninguno de momento. ¿Te animas a hacer el próximo?'' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Acabados ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; &amp;lt;!-- style=&amp;quot;text-align:right&amp;quot; --&amp;gt;&lt;br /&gt;
|- style=&amp;quot;background:#ececec;&amp;quot;&lt;br /&gt;
! Nombre&lt;br /&gt;
! Autor/a&lt;br /&gt;
! Año&lt;br /&gt;
! Centro de estudios&lt;br /&gt;
! Idioma&lt;br /&gt;
! Descarga&lt;br /&gt;
! Licencia&lt;br /&gt;
! Página web&lt;br /&gt;
! Comentario&lt;br /&gt;
|-&lt;br /&gt;
| Gestión Ciudadana de la Tecnología: Una aproximación desde los Science and Technology Studies a las redes wifi y la governance urbana a través de guifi.net&lt;br /&gt;
| Yann Bona Beauvois&lt;br /&gt;
| -&lt;br /&gt;
| UAB&lt;br /&gt;
| Español&lt;br /&gt;
| [[:Archivo:Gestion_Ciudadana_de_la_Tecnologia.pdf|PDF]]&lt;br /&gt;
| -&lt;br /&gt;
| [http://ddd.uab.cat/record/70077?ln=ca] [http://psicologiasocial.uab.es/athenea/index.php/atheneaDigital/article/view/849]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| [[Utilidades Guifi.net]] y [[GuifiManage]]&lt;br /&gt;
| [[Usuario:Ganon|Isidro Manzano Navaza]].&lt;br /&gt;
| 2012&lt;br /&gt;
| [http://www.escoladeltreball.org Escola del Treball de Barcelona]&lt;br /&gt;
| Catalan, castellano e ingles&lt;br /&gt;
| [https://gitorious.org/caixa-d-eines-de-guifi-net/caixa-d-eines-de-guifi-net Repositorio]&lt;br /&gt;
| GPL el código, CC-by los diagramas y GNU FDL la documentación.&lt;br /&gt;
| -&lt;br /&gt;
| Android - Java&lt;br /&gt;
|-&lt;br /&gt;
| PFC para mejorar la gestión y el soporte de nuevos dispositivos&amp;lt;ref name=&amp;quot;trastos&amp;quot;/&amp;gt;&amp;lt;ref&amp;gt;https://lists.guifi.net/pipermail/guifi-rdes/2012-June/024570.html&amp;lt;/ref&amp;gt;[https://lists.guifi.net/pipermail/guifi-rdes/2012-June/024782.html] [http://terrassa.guifi.net/pfc_guifi_albertsarle/exposicio.html].&lt;br /&gt;
| [[Usuario:Albir|Albert Sarle]]&lt;br /&gt;
| 2012&lt;br /&gt;
| UAB&lt;br /&gt;
| Memoria en catalán&lt;br /&gt;
| [https://gitorious.org/~albertsarle/guifi/albertsarle-drupal-guifi_pfc Repositorio] [http://dl.dropbox.com/u/1834023/PFC_guifinet_AlbertSarle.pdf Memoria] [http://terrassa.guifi.net/pfc_guifi_albertsarle/exposicio.html Presentación HTML]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| PFC sobre el desarrollo del firmware [[Quick Mesh Project]] (QMP)&lt;br /&gt;
| [[Usuario:Hakais|Pau Escrich]]&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| Memoria en inglés&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://qmp.cat/ Sitio web del proyecto] [http://upcommons.upc.edu/pfc/handle/2099.1/14103] [http://qmp.cat/documents/11 Tesis - Documentación técnica] {{en}}&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Sistema de servidores [[VoIP]] del proyecto guifi.net&lt;br /&gt;
| Tomás Velázquez García&lt;br /&gt;
| -&lt;br /&gt;
| UAB&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://ddd.uab.cat/record/70278?ln=ca]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Millora de la gestió d’una xarxa WiFi: Guifi.net&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/3798]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Wifi mesh network nodes on guifi.net &lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/7383]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Estudi i propostes de millora de la xarxa Guifi.net (I)&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/4622]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Estudio y propuestas de mejora de la red GUIFI.NET (II)&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/4623]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Scalability study of Guifi.net and mesh networks&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/11580]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Protocolos de encaminamiento en redes inalámbricas mesh: un estudio teórico y experimental&lt;br /&gt;
| Albert Batiste Troyano&lt;br /&gt;
| 2011&lt;br /&gt;
| UOC / US&lt;br /&gt;
| Español&lt;br /&gt;
| [http://openaccess.uoc.edu/webapps/o2/bitstream/10609/8164/1/abatistet_TFM_0611.pdf]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Mejora de la aplicación de mapas de Guifi.net&amp;lt;ref&amp;gt;https://lists.guifi.net/pipermail/guifi-webdev/2012-July/001830.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
| David Rubio Miguélez&lt;br /&gt;
| 2012&lt;br /&gt;
| UJI&lt;br /&gt;
| Español&lt;br /&gt;
| [https://www.dropbox.com/s/974exzldfrno1wb/proyecto.pdf Memoria]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Perspectiva psicosocial ecológica del proyecto: la red social virtual abierta, libre y neutral basada en infraestructura&lt;br /&gt;
| Jordi Paradís Medina&lt;br /&gt;
| 2012&lt;br /&gt;
| UAB&lt;br /&gt;
| Catalán&lt;br /&gt;
| [http://generatech.org/sites/default/files/guifinet_social_ecologic.pdf Trabajo de fin de grado en psicología]&lt;br /&gt;
| Creative Commons 3.0 BY-NC-SA&lt;br /&gt;
| [http://psicovirtual.uab.cat/treballgrau/ocs/index.php/tfgpsico/tfg12/paper/view/25]&lt;br /&gt;
| Visió autoetnogràfica i holística d'aquest projecte tecnosocial, que inclou la descripció d'un seguit de dificultats detectades alhora de voler formar-ne part, en general i des de una casa apartada a la muntanya del Montnegre al Maresme Nord.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Servei SNPServices amb notificacio [[Monitor]]&lt;br /&gt;
|David Pérez Martorell&lt;br /&gt;
|UOC&lt;br /&gt;
|Català&lt;br /&gt;
|document, presentacio i video demo&lt;br /&gt;
| Creative Commons 3.0 BY-NC-SA&lt;br /&gt;
|Programes que amplien el servei SNPServices. Fa ping als nodes del grup de nodes del servidor d gràfics i informa al servidor web de incidencies. El servidor web envia correus als responsables&lt;br /&gt;
&amp;lt;!-- * ''No hay ninguno de momento. ¿Te animas a hacer el próximo?'' --&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ideas &amp;lt;ref&amp;gt;{{MM|url=https://lists.guifi.net/pipermail/guifi-usuaris/2012-March/018102.html|list=Usuaris}}&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
* Repetir algo de http://upcommons.upc.edu/pfc/handle/2099.1/11081 (sobre el orden &amp;quot;de entrada&amp;quot; de los paquetes ad-hoc vs infraestructura en un mismo canal)&lt;br /&gt;
* Plugins BGP-(OLSR/BATMAN/BMX)&lt;br /&gt;
&lt;br /&gt;
=== Personas del guifibages a finales de 2009 propusieron ===&lt;br /&gt;
* Evaluar el rendimiento de OLSR y compararlo con otros protocolos de enrutamiento dinámico. Buscar qué significan todos los parámetros de configuración y optimizar el rendimiento en guifibages.&lt;br /&gt;
* Estudiar el driver madwifi y optimizar el rendimiento en las condiciones guifibages (iría ligado con el anterior en un posible proyecto: &amp;quot;Optimización de guifibages: madwifi + OLSR&amp;quot;.&lt;br /&gt;
* Sistema de visualización en tiempo real de la calidad del enlace integrado en los mapas de Guifi.net a partir del plugin olsr-dot-draw/olsr-txtinfo.&lt;br /&gt;
* Creación de un testbed openwrt + mesh en la UPC: que el proyectista monte en la universidad una serie de radios dispersos por los edificios que se puedan poner en marcha, para y configurar desde un servidor &amp;quot;central&amp;quot;.&lt;br /&gt;
* Es un tipo de &amp;quot;encargo&amp;quot; que nos hemos tomado de la [[Open Spectrum Alliance]]. Se trataría de evaluar la ocupación de las frecuencias de TV (analógica y TDT) para averiguar los &amp;quot;espacios en blanco&amp;quot; de una zona.&lt;br /&gt;
* [https://lists.guifi.net/pipermail/guifi-rdes/2011-November/022064.html] [https://lists.guifi.net/pipermail/guifi-rdes/2011-November/022066.html]&lt;br /&gt;
&lt;br /&gt;
== Véase también ==&lt;br /&gt;
* [[Google Summer of Code]]&lt;br /&gt;
* [[Publicaciones]]&lt;br /&gt;
&lt;br /&gt;
== Referencias ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enlaces externos ==&lt;br /&gt;
* http://guifi.net/ca/node/3496 {{ca}}&lt;br /&gt;
* http://guifi.net/ca/ProjectesInvestigacio {{ca}}&lt;br /&gt;
* [http://ddd.uab.cat/search?ln=ca&amp;amp;as=1&amp;amp;m1=a&amp;amp;p1=guifi&amp;amp;f1=title&amp;amp;op1=a&amp;amp;m2=a&amp;amp;p2=&amp;amp;f2=codititulacio&amp;amp;op2=a&amp;amp;m3=a&amp;amp;p3=&amp;amp;f3=year&amp;amp;action_search=Cerca&amp;amp;c=Dip%C3%B2sit+Digital+de+Documents+de+la+UAB&amp;amp;sf=&amp;amp;so=a&amp;amp;rm=&amp;amp;rg=10&amp;amp;sc=1&amp;amp;of=hb Depósito Digital de Documentos de la UAB: guifi]&lt;br /&gt;
* [http://upcommons.upc.edu/pfc/simple-search?query=guifi Trabajos académicos UPC: guifi], upcommons&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Material académico]]&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/Proyecto_de_Fin_de_Carrera</id>
		<title>Proyecto de Fin de Carrera</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/Proyecto_de_Fin_de_Carrera"/>
				<updated>2013-06-23T13:09:29Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: /* Acabados */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Archivo:Graduate_award.svg|right|200px]]&lt;br /&gt;
&lt;br /&gt;
A menudo&amp;lt;ref name=&amp;quot;trastos&amp;quot;&amp;gt;https://lists.guifi.net/pipermail/guifi-rdes/2011-November/022033.html&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://lists.guifi.net/pipermail/guifi-usuaris/2012-March/018092.html&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://lists.guifi.net/pipermail/guifi-webdev/2012-March/001769.html&amp;lt;/ref&amp;gt;, estudiantes o investigadores contactan con la comunidad de Guifi.net porque desean realizar proyectos de investigación, '''Proyectos de Fin de Carrera''' (PFC) o de final de ciclo  CFGS relacionados con la red Guifi.net o que puedan ayudar a su expansión.&lt;br /&gt;
&lt;br /&gt;
Los proyectos o trabajos no tienen porqué ser únicamente '''técnicos''', de informática o telecomunicaciones. Dentro de Guifi.net también tienen cabida proyectos y trabajos de carácter '''legal''', '''social''', '''psicológico''', '''publicidad''', de '''contenidos'''..., etc.&lt;br /&gt;
&lt;br /&gt;
Si estás interesado/a, lo mejor es que contactes con nosotros a través de la [[lista de correo]] de desarrollo ('''guifi-rdes''').&lt;br /&gt;
&lt;br /&gt;
== Proyectos ==&lt;br /&gt;
&lt;br /&gt;
=== En desarrollo ===&lt;br /&gt;
* [[Monitor]], por David Pérez Martorell (Máster de Software Libre, UOC)&lt;br /&gt;
&amp;lt;!-- * ''No hay ninguno de momento. ¿Te animas a hacer el próximo?'' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Acabados ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; &amp;lt;!-- style=&amp;quot;text-align:right&amp;quot; --&amp;gt;&lt;br /&gt;
|- style=&amp;quot;background:#ececec;&amp;quot;&lt;br /&gt;
! Nombre&lt;br /&gt;
! Autor/a&lt;br /&gt;
! Año&lt;br /&gt;
! Centro de estudios&lt;br /&gt;
! Idioma&lt;br /&gt;
! Descarga&lt;br /&gt;
! Licencia&lt;br /&gt;
! Página web&lt;br /&gt;
! Comentario&lt;br /&gt;
|-&lt;br /&gt;
| Gestión Ciudadana de la Tecnología: Una aproximación desde los Science and Technology Studies a las redes wifi y la governance urbana a través de guifi.net&lt;br /&gt;
| Yann Bona Beauvois&lt;br /&gt;
| -&lt;br /&gt;
| UAB&lt;br /&gt;
| Español&lt;br /&gt;
| [[:Archivo:Gestion_Ciudadana_de_la_Tecnologia.pdf|PDF]]&lt;br /&gt;
| -&lt;br /&gt;
| [http://ddd.uab.cat/record/70077?ln=ca] [http://psicologiasocial.uab.es/athenea/index.php/atheneaDigital/article/view/849]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| [[Utilidades Guifi.net]] y [[GuifiManage]]&lt;br /&gt;
| [[Usuario:Ganon|Isidro Manzano Navaza]].&lt;br /&gt;
| 2012&lt;br /&gt;
| [http://www.escoladeltreball.org Escola del Treball de Barcelona]&lt;br /&gt;
| Catalan, castellano e ingles&lt;br /&gt;
| [https://gitorious.org/caixa-d-eines-de-guifi-net/caixa-d-eines-de-guifi-net Repositorio]&lt;br /&gt;
| GPL el código, CC-by los diagramas y GNU FDL la documentación.&lt;br /&gt;
| -&lt;br /&gt;
| Android - Java&lt;br /&gt;
|-&lt;br /&gt;
| PFC para mejorar la gestión y el soporte de nuevos dispositivos&amp;lt;ref name=&amp;quot;trastos&amp;quot;/&amp;gt;&amp;lt;ref&amp;gt;https://lists.guifi.net/pipermail/guifi-rdes/2012-June/024570.html&amp;lt;/ref&amp;gt;[https://lists.guifi.net/pipermail/guifi-rdes/2012-June/024782.html] [http://terrassa.guifi.net/pfc_guifi_albertsarle/exposicio.html].&lt;br /&gt;
| [[Usuario:Albir|Albert Sarle]]&lt;br /&gt;
| 2012&lt;br /&gt;
| UAB&lt;br /&gt;
| Memoria en catalán&lt;br /&gt;
| [https://gitorious.org/~albertsarle/guifi/albertsarle-drupal-guifi_pfc Repositorio] [http://dl.dropbox.com/u/1834023/PFC_guifinet_AlbertSarle.pdf Memoria] [http://terrassa.guifi.net/pfc_guifi_albertsarle/exposicio.html Presentación HTML]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| PFC sobre el desarrollo del firmware [[Quick Mesh Project]] (QMP)&lt;br /&gt;
| [[Usuario:Hakais|Pau Escrich]]&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| Memoria en inglés&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://qmp.cat/ Sitio web del proyecto] [http://upcommons.upc.edu/pfc/handle/2099.1/14103] [http://qmp.cat/documents/11 Tesis - Documentación técnica] {{en}}&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Sistema de servidores [[VoIP]] del proyecto guifi.net&lt;br /&gt;
| Tomás Velázquez García&lt;br /&gt;
| -&lt;br /&gt;
| UAB&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://ddd.uab.cat/record/70278?ln=ca]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Millora de la gestió d’una xarxa WiFi: Guifi.net&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/3798]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Wifi mesh network nodes on guifi.net &lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/7383]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Estudi i propostes de millora de la xarxa Guifi.net (I)&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/4622]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Estudio y propuestas de mejora de la red GUIFI.NET (II)&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/4623]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Scalability study of Guifi.net and mesh networks&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| UPC&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| [http://upcommons.upc.edu/pfc/handle/2099.1/11580]&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Protocolos de encaminamiento en redes inalámbricas mesh: un estudio teórico y experimental&lt;br /&gt;
| Albert Batiste Troyano&lt;br /&gt;
| 2011&lt;br /&gt;
| UOC / US&lt;br /&gt;
| Español&lt;br /&gt;
| [http://openaccess.uoc.edu/webapps/o2/bitstream/10609/8164/1/abatistet_TFM_0611.pdf]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Mejora de la aplicación de mapas de Guifi.net&amp;lt;ref&amp;gt;https://lists.guifi.net/pipermail/guifi-webdev/2012-July/001830.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
| David Rubio Miguélez&lt;br /&gt;
| 2012&lt;br /&gt;
| UJI&lt;br /&gt;
| Español&lt;br /&gt;
| [https://www.dropbox.com/s/974exzldfrno1wb/proyecto.pdf Memoria]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| Perspectiva psicosocial ecológica del proyecto: la red social virtual abierta, libre y neutral basada en infraestructura&lt;br /&gt;
| Jordi Paradís Medina&lt;br /&gt;
| 2012&lt;br /&gt;
| UAB&lt;br /&gt;
| Catalán&lt;br /&gt;
| [http://generatech.org/sites/default/files/guifinet_social_ecologic.pdf Trabajo de fin de grado en psicología]&lt;br /&gt;
| Creative Commons 3.0 BY-NC-SA&lt;br /&gt;
| [http://psicovirtual.uab.cat/treballgrau/ocs/index.php/tfgpsico/tfg12/paper/view/25]&lt;br /&gt;
| Visió autoetnogràfica i holística d'aquest projecte tecnosocial, que inclou la descripció d'un seguit de dificultats detectades alhora de voler formar-ne part, en general i des de una casa apartada a la muntanya del Montnegre al Maresme Nord.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|Servei SNPServices amb notificacio [[Monitor]]&lt;br /&gt;
|David Pérez Martorell&lt;br /&gt;
|UOC&lt;br /&gt;
|Català&lt;br /&gt;
|document, presentacio i video demo&lt;br /&gt;
| Creative Commons 3.0 BY-NC-SA&lt;br /&gt;
|Programes que amplien el servei SNPServices. Fa ping als nodes del grup de nodes del servidor d gràfics i informa al servidor web de incidencies. El servidor web envia correus als responsables&lt;br /&gt;
&amp;lt;!-- * ''No hay ninguno de momento. ¿Te animas a hacer el próximo?'' --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ideas &amp;lt;ref&amp;gt;{{MM|url=https://lists.guifi.net/pipermail/guifi-usuaris/2012-March/018102.html|list=Usuaris}}&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
* Repetir algo de http://upcommons.upc.edu/pfc/handle/2099.1/11081 (sobre el orden &amp;quot;de entrada&amp;quot; de los paquetes ad-hoc vs infraestructura en un mismo canal)&lt;br /&gt;
* Plugins BGP-(OLSR/BATMAN/BMX)&lt;br /&gt;
&lt;br /&gt;
=== Personas del guifibages a finales de 2009 propusieron ===&lt;br /&gt;
* Evaluar el rendimiento de OLSR y compararlo con otros protocolos de enrutamiento dinámico. Buscar qué significan todos los parámetros de configuración y optimizar el rendimiento en guifibages.&lt;br /&gt;
* Estudiar el driver madwifi y optimizar el rendimiento en las condiciones guifibages (iría ligado con el anterior en un posible proyecto: &amp;quot;Optimización de guifibages: madwifi + OLSR&amp;quot;.&lt;br /&gt;
* Sistema de visualización en tiempo real de la calidad del enlace integrado en los mapas de Guifi.net a partir del plugin olsr-dot-draw/olsr-txtinfo.&lt;br /&gt;
* Creación de un testbed openwrt + mesh en la UPC: que el proyectista monte en la universidad una serie de radios dispersos por los edificios que se puedan poner en marcha, para y configurar desde un servidor &amp;quot;central&amp;quot;.&lt;br /&gt;
* Es un tipo de &amp;quot;encargo&amp;quot; que nos hemos tomado de la [[Open Spectrum Alliance]]. Se trataría de evaluar la ocupación de las frecuencias de TV (analógica y TDT) para averiguar los &amp;quot;espacios en blanco&amp;quot; de una zona.&lt;br /&gt;
* [https://lists.guifi.net/pipermail/guifi-rdes/2011-November/022064.html] [https://lists.guifi.net/pipermail/guifi-rdes/2011-November/022066.html]&lt;br /&gt;
&lt;br /&gt;
== Véase también ==&lt;br /&gt;
* [[Google Summer of Code]]&lt;br /&gt;
* [[Publicaciones]]&lt;br /&gt;
&lt;br /&gt;
== Referencias ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enlaces externos ==&lt;br /&gt;
* http://guifi.net/ca/node/3496 {{ca}}&lt;br /&gt;
* http://guifi.net/ca/ProjectesInvestigacio {{ca}}&lt;br /&gt;
* [http://ddd.uab.cat/search?ln=ca&amp;amp;as=1&amp;amp;m1=a&amp;amp;p1=guifi&amp;amp;f1=title&amp;amp;op1=a&amp;amp;m2=a&amp;amp;p2=&amp;amp;f2=codititulacio&amp;amp;op2=a&amp;amp;m3=a&amp;amp;p3=&amp;amp;f3=year&amp;amp;action_search=Cerca&amp;amp;c=Dip%C3%B2sit+Digital+de+Documents+de+la+UAB&amp;amp;sf=&amp;amp;so=a&amp;amp;rm=&amp;amp;rg=10&amp;amp;sc=1&amp;amp;of=hb Depósito Digital de Documentos de la UAB: guifi]&lt;br /&gt;
* [http://upcommons.upc.edu/pfc/simple-search?query=guifi Trabajos académicos UPC: guifi], upcommons&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Material académico]]&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas</id>
		<title>Servidor de gráficas</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas"/>
				<updated>2012-11-11T22:20:37Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: /* Definicion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= Definicion = &lt;br /&gt;
El servidor de gráficas se baas en el servicio de GUIFI llamado SNPServices.&lt;br /&gt;
El servidor SNPServices, y para ser mas exactos cliente SNPServices es un servidor linux, con php, apache, mrtg y rrdtool, no&lt;br /&gt;
necesita nada mas.&lt;br /&gt;
Le llamamos cliente porque el servidor Master SNPServices es un servidor que nos enviará informacion a nuestro servidor cliente SNPServices.&lt;br /&gt;
Aqui tienes un esquema que te hará ver claro esta definicion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Definicion para expertos&lt;br /&gt;
El cliente SNPServices consulta al Master snpservices la lista de nodos a monitorear, recogida previamente del servidor web mediante CNML, se parsea la lista y formatea scripts mrtg y los&lt;br /&gt;
ejecuta (pings y trafico) para generar un rrd y con consultas http desde el servidor web, se ejecuta un php que convierte los .rrd en imagenes y las muestra.&lt;br /&gt;
&lt;br /&gt;
El servidor WEB de guifi.net conoce la url del servidor de graficas de la zona de un nodo, o sea, los SNPServices clientes de cada zona. La web muestra sus datos locales y los datos remotos.&lt;br /&gt;
&lt;br /&gt;
Definicion extendida&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SNPServices.png]]&lt;br /&gt;
&lt;br /&gt;
'''Pas 1'''.-Un nodo crea un servicio de servidor de gráficas en la web. Este servicio le concede un numero que le identifica. A este valor le llamamos '''$SNPGraphServerId''' &lt;br /&gt;
Aquest servidor de gràfics, s'instalara un servei Apache, php i els ervei SNPServices. La direccio web l'anomenarem com '''$SNPDataServer_url'''&lt;br /&gt;
&lt;br /&gt;
Este servicio puede ser ademas supernodo de una zona y por tanto tiene el código de la zona. A este valor el llamamos '''$rootZone'''&lt;br /&gt;
&lt;br /&gt;
'''Pas 2''',. Al crearse este nodo, se actualiza la BBDD de la web- Esta base de datos contiene toda la información de los nodos,servicios y demas de GUIFI.NET&lt;br /&gt;
&lt;br /&gt;
'''Pas 3 i 4''' Abans de continuar amb el treball que fa el servidor SNPServices client, el Master SNPServices ha de fer un treball.&lt;br /&gt;
El Master SNPServices consulta al servidor Web una lista de todos los nodos de una zona. Aquesta pregunta la fa amb el script php que es diu '''refresh_cnml.php.''' . El servidor web li torna una llista de nodes en format CNML que enmagatzema en un arxiu que es diu /var/lib/snpservices/data/guifi.cnml&lt;br /&gt;
&lt;br /&gt;
Mostro l'inici de l'arxiu guifi.cnml&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;cnml version=&amp;quot;0.1&amp;quot; server_id=&amp;quot;1&amp;quot; server_url=&amp;quot;http://guifi.net&amp;quot; generated=&amp;quot;20121105 1247&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Exactament l'arxiu que obre es aixi $SNPDataServer_url.&amp;quot;/guifi/cnml/&amp;quot;.$rootZone.&amp;quot;/detail&amp;quot;&lt;br /&gt;
&lt;br /&gt;
El servidor web torna un arxiu i el servidor SNPServices el guarda a /var/lib/snpservices/data/guifi.cnml&lt;br /&gt;
Aquest arxiu s'actualitza de tant en tant i es necessari fer-ho ja que els canvis a la web no es reflexarien en els serveis a monitoritzar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 5 i 6'''.-Tornem al nostre servidor client SNPServices que estem muntant.&lt;br /&gt;
&lt;br /&gt;
El servidor SNPServices te una direccio an on buscar l'arxiu cnml crear per el Master SNPServices&lt;br /&gt;
$MRTGConfigSource='$SNPDataServer_url.&amp;quot;/graphs/cnml2mrtgcsv.php?server&amp;quot;.='.$SNPGraphServerId;&lt;br /&gt;
&lt;br /&gt;
En aquesta direccio es descarrega la llista de nodes a monitoritzar i transforma el contingut en una arxiu que conte els nodes a monitotritzar i en un llenguatge que el pugui entendre el servei mrtg.&lt;br /&gt;
&lt;br /&gt;
Mostro l'inici de l'arxiu mrtg.cfg&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# PathAdd: /usr/local/rrdtool-1.2.12/bin&lt;br /&gt;
# LibAdd: /usr/local/rrdtool-1.2.12/lib/perl/5.8.8/i386-linux-thread-multi&lt;br /&gt;
HtmlDir: /var/lib/snpservices/rrimg/&lt;br /&gt;
ImageDir: /var/lib/snpservices/rrimg/ &lt;br /&gt;
LogDir: /var/lib/snpservices/rrdb/&lt;br /&gt;
LogFormat: rrdtool&lt;br /&gt;
ThreshDir: /var/lib/snpservices/rrdb/&lt;br /&gt;
Forks: 12&lt;br /&gt;
Title[11833_ping]: Temps del ping de Futbol-Remei-VicRd1 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per veure aquesta llista en format csv desde web la podem demanar aixi&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$SNPDataServer_url/snpservices/graphs/cnml2mrtgcsv.php?server=$SNPGraphServerId&lt;br /&gt;
&lt;br /&gt;
Jo ho faig amb aquests valors&lt;br /&gt;
http://192.168.1.44/snpservices/graphs/cnml2mrtgcsv.php?server=6833&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De pas, veurem si fins aqui funciona tot.&lt;br /&gt;
&lt;br /&gt;
El los del sistema a on ens diu els moviments d'aques proces esta a '''/var/log/snpservices/mrtgccfg.log'''&lt;br /&gt;
&lt;br /&gt;
Al instalar el serveis SNPServices , s'ens ha afegit un cron a &lt;br /&gt;
&lt;br /&gt;
Aquest cron (script que s'autoexecuta segons programació) esta aqui '''/etc/cron.d/snpservices'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
*/30 *  * * *   root    if [ -x /usr/bin/php ]; then env LANG=C /usr/bin/php /usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php &amp;gt;&amp;gt; /var/log/snpservices/mrtgccfg.log 2&amp;gt;&amp;amp;1; fi&lt;br /&gt;
*/5 *   * * *   root    if [ ! -x /var/lock/mrtg ]; then mkdir /var/lock/mrtg ; fi; if [ -x /usr/bin/mrtg ] &amp;amp;&amp;amp; [ -r /var/lib/snpservices/data/mrtg.cfg ]; then env LANG=C /usr/bin/mrtg /var/lib/snpservices/data/mrtg.cfg --lock-file /var/lock/mrtg/guifi_l &amp;gt;&amp;gt; /var/log/snpservices/mrtg.log 2&amp;gt;&amp;amp;1; fi&lt;br /&gt;
/usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquest ve a dir que mitjançant el script /usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php, consulti l'arxiu guifi.cnml abans descrit i transformi el contingut en un xml disponible per al servei mrtg. Ho enmagatzema en /var/lib/snpservices/data/mrtg.cfg&lt;br /&gt;
&lt;br /&gt;
Una vegada el nostre servidor SNPServices client te les dades dels nodes a monitoritzar, es qua s'executa el proces de recerca de dades al mon amb el sistema mrtg. Ho fa amb /usr/bin/mrtg /var/lib/snpservices/data/mrtg.cfg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 7''' El servei mrtg consulta les dades amb ping i els envia a rrdtood que fabrica el gràfic.&lt;br /&gt;
el log dels movimetns del servei mrtg estan a '''/var/log/snpservices/mrtgc.log'''&lt;br /&gt;
Les dades per fer el gràfic s'enmagatzemen en '''/var/lib/snpservices/rrdb'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 8''' Els clients que volen informació dels nodes, la busquen al servidor web, el servidor web busca les dades i les troba dins del seu MySQL, pero els gràfics els va a buscar al servidor de gràfics d'aquell node, o sigui, al server $SNPGraphServerId.&lt;br /&gt;
&lt;br /&gt;
= Manuales =&lt;br /&gt;
* [[SNPservices]] Instalacion SNPServices mediante GIT. Aqui hay explicacion interesante, pero GIT no esta actualizado. Mejor usar instalacion de snpservices como servicio de Debian con metodo at-get&lt;br /&gt;
* [[Servidor de gráficas 1]]  (Debian/Ubuntu) método apt + configuración virtualhost apache&lt;br /&gt;
* [[Servidor de gráficas 2]] (Debian/Ubuntu) método dpkg&lt;br /&gt;
* [[Servidor de gráficas 3]] (Debian/Ubuntu) extendido&lt;br /&gt;
&lt;br /&gt;
* [Tutorial servicio SNPServices http:www3.uji.es/~vrubert/guifi_linux/graph.html]&lt;br /&gt;
&lt;br /&gt;
= PMF =&lt;br /&gt;
* [[Regenerar los ficheros rrd]]&lt;br /&gt;
* tener en cuenta que al connectar un dispositivo por cable ponerlo en Lan o en la ubicacion que sea, sino puede que no grafique correctamente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Referencias =&lt;br /&gt;
*[http://www.guifi.net/proxy-debian manual debian de guifi.net]&lt;br /&gt;
*[http://asociacionjuvenilelcueto.info/node/156 manual de la associació Juvenil el Cueto (Rioja)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ca:Servidor_de_gràfiques]]&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas</id>
		<title>Servidor de gráficas</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas"/>
				<updated>2012-11-11T22:20:15Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: /* Definicion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= Definicion = &lt;br /&gt;
El servidor de gráficas se baas en el servicio de GUIFI llamado SNPServices.&lt;br /&gt;
El servidor SNPServices, y para ser mas exactos cliente SNPServices es un servidor linux, con php, apache, mrtg y rrdtool, no&lt;br /&gt;
necesita nada mas.&lt;br /&gt;
Le llamamos cliente porque el servidor Master SNPServices es un servidor que nos enviará informacion a nuestro servidor cliente SNPServices.&lt;br /&gt;
Aqui tienes un esquema que te hará ver claro esta definicion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Definicion para expertos&lt;br /&gt;
El cliente SNPServices consulta al Master snpservices la lista de nodos a monitorear, recogida previamente del servidor web mediante CNML, se parsea la lista y formatea scripts mrtg y los&lt;br /&gt;
ejecuta (pings y trafico) para generar un rrd y con consultas http desde el servidor web, se ejecuta un php que convierte los .rrd en imagenes y las muestra.&lt;br /&gt;
&lt;br /&gt;
El servidor WEB de guifi.net conoce la url del servidor de graficas de la zona de un nodo, o sea, los SNPServices clientes de cada zona. La web muestra sus datos locales y los datos remotos.&lt;br /&gt;
&lt;br /&gt;
Definicion extendida&lt;br /&gt;
[[Archivo:SNPServices.png]]&lt;br /&gt;
&lt;br /&gt;
'''Pas 1'''.-Un nodo crea un servicio de servidor de gráficas en la web. Este servicio le concede un numero que le identifica. A este valor le llamamos '''$SNPGraphServerId''' &lt;br /&gt;
Aquest servidor de gràfics, s'instalara un servei Apache, php i els ervei SNPServices. La direccio web l'anomenarem com '''$SNPDataServer_url'''&lt;br /&gt;
&lt;br /&gt;
Este servicio puede ser ademas supernodo de una zona y por tanto tiene el código de la zona. A este valor el llamamos '''$rootZone'''&lt;br /&gt;
&lt;br /&gt;
'''Pas 2''',. Al crearse este nodo, se actualiza la BBDD de la web- Esta base de datos contiene toda la información de los nodos,servicios y demas de GUIFI.NET&lt;br /&gt;
&lt;br /&gt;
'''Pas 3 i 4''' Abans de continuar amb el treball que fa el servidor SNPServices client, el Master SNPServices ha de fer un treball.&lt;br /&gt;
El Master SNPServices consulta al servidor Web una lista de todos los nodos de una zona. Aquesta pregunta la fa amb el script php que es diu '''refresh_cnml.php.''' . El servidor web li torna una llista de nodes en format CNML que enmagatzema en un arxiu que es diu /var/lib/snpservices/data/guifi.cnml&lt;br /&gt;
&lt;br /&gt;
Mostro l'inici de l'arxiu guifi.cnml&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;cnml version=&amp;quot;0.1&amp;quot; server_id=&amp;quot;1&amp;quot; server_url=&amp;quot;http://guifi.net&amp;quot; generated=&amp;quot;20121105 1247&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Exactament l'arxiu que obre es aixi $SNPDataServer_url.&amp;quot;/guifi/cnml/&amp;quot;.$rootZone.&amp;quot;/detail&amp;quot;&lt;br /&gt;
&lt;br /&gt;
El servidor web torna un arxiu i el servidor SNPServices el guarda a /var/lib/snpservices/data/guifi.cnml&lt;br /&gt;
Aquest arxiu s'actualitza de tant en tant i es necessari fer-ho ja que els canvis a la web no es reflexarien en els serveis a monitoritzar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 5 i 6'''.-Tornem al nostre servidor client SNPServices que estem muntant.&lt;br /&gt;
&lt;br /&gt;
El servidor SNPServices te una direccio an on buscar l'arxiu cnml crear per el Master SNPServices&lt;br /&gt;
$MRTGConfigSource='$SNPDataServer_url.&amp;quot;/graphs/cnml2mrtgcsv.php?server&amp;quot;.='.$SNPGraphServerId;&lt;br /&gt;
&lt;br /&gt;
En aquesta direccio es descarrega la llista de nodes a monitoritzar i transforma el contingut en una arxiu que conte els nodes a monitotritzar i en un llenguatge que el pugui entendre el servei mrtg.&lt;br /&gt;
&lt;br /&gt;
Mostro l'inici de l'arxiu mrtg.cfg&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# PathAdd: /usr/local/rrdtool-1.2.12/bin&lt;br /&gt;
# LibAdd: /usr/local/rrdtool-1.2.12/lib/perl/5.8.8/i386-linux-thread-multi&lt;br /&gt;
HtmlDir: /var/lib/snpservices/rrimg/&lt;br /&gt;
ImageDir: /var/lib/snpservices/rrimg/ &lt;br /&gt;
LogDir: /var/lib/snpservices/rrdb/&lt;br /&gt;
LogFormat: rrdtool&lt;br /&gt;
ThreshDir: /var/lib/snpservices/rrdb/&lt;br /&gt;
Forks: 12&lt;br /&gt;
Title[11833_ping]: Temps del ping de Futbol-Remei-VicRd1 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per veure aquesta llista en format csv desde web la podem demanar aixi&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$SNPDataServer_url/snpservices/graphs/cnml2mrtgcsv.php?server=$SNPGraphServerId&lt;br /&gt;
&lt;br /&gt;
Jo ho faig amb aquests valors&lt;br /&gt;
http://192.168.1.44/snpservices/graphs/cnml2mrtgcsv.php?server=6833&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De pas, veurem si fins aqui funciona tot.&lt;br /&gt;
&lt;br /&gt;
El los del sistema a on ens diu els moviments d'aques proces esta a '''/var/log/snpservices/mrtgccfg.log'''&lt;br /&gt;
&lt;br /&gt;
Al instalar el serveis SNPServices , s'ens ha afegit un cron a &lt;br /&gt;
&lt;br /&gt;
Aquest cron (script que s'autoexecuta segons programació) esta aqui '''/etc/cron.d/snpservices'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
*/30 *  * * *   root    if [ -x /usr/bin/php ]; then env LANG=C /usr/bin/php /usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php &amp;gt;&amp;gt; /var/log/snpservices/mrtgccfg.log 2&amp;gt;&amp;amp;1; fi&lt;br /&gt;
*/5 *   * * *   root    if [ ! -x /var/lock/mrtg ]; then mkdir /var/lock/mrtg ; fi; if [ -x /usr/bin/mrtg ] &amp;amp;&amp;amp; [ -r /var/lib/snpservices/data/mrtg.cfg ]; then env LANG=C /usr/bin/mrtg /var/lib/snpservices/data/mrtg.cfg --lock-file /var/lock/mrtg/guifi_l &amp;gt;&amp;gt; /var/log/snpservices/mrtg.log 2&amp;gt;&amp;amp;1; fi&lt;br /&gt;
/usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquest ve a dir que mitjançant el script /usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php, consulti l'arxiu guifi.cnml abans descrit i transformi el contingut en un xml disponible per al servei mrtg. Ho enmagatzema en /var/lib/snpservices/data/mrtg.cfg&lt;br /&gt;
&lt;br /&gt;
Una vegada el nostre servidor SNPServices client te les dades dels nodes a monitoritzar, es qua s'executa el proces de recerca de dades al mon amb el sistema mrtg. Ho fa amb /usr/bin/mrtg /var/lib/snpservices/data/mrtg.cfg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 7''' El servei mrtg consulta les dades amb ping i els envia a rrdtood que fabrica el gràfic.&lt;br /&gt;
el log dels movimetns del servei mrtg estan a '''/var/log/snpservices/mrtgc.log'''&lt;br /&gt;
Les dades per fer el gràfic s'enmagatzemen en '''/var/lib/snpservices/rrdb'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 8''' Els clients que volen informació dels nodes, la busquen al servidor web, el servidor web busca les dades i les troba dins del seu MySQL, pero els gràfics els va a buscar al servidor de gràfics d'aquell node, o sigui, al server $SNPGraphServerId.&lt;br /&gt;
&lt;br /&gt;
= Manuales =&lt;br /&gt;
* [[SNPservices]] Instalacion SNPServices mediante GIT. Aqui hay explicacion interesante, pero GIT no esta actualizado. Mejor usar instalacion de snpservices como servicio de Debian con metodo at-get&lt;br /&gt;
* [[Servidor de gráficas 1]]  (Debian/Ubuntu) método apt + configuración virtualhost apache&lt;br /&gt;
* [[Servidor de gráficas 2]] (Debian/Ubuntu) método dpkg&lt;br /&gt;
* [[Servidor de gráficas 3]] (Debian/Ubuntu) extendido&lt;br /&gt;
&lt;br /&gt;
* [Tutorial servicio SNPServices http:www3.uji.es/~vrubert/guifi_linux/graph.html]&lt;br /&gt;
&lt;br /&gt;
= PMF =&lt;br /&gt;
* [[Regenerar los ficheros rrd]]&lt;br /&gt;
* tener en cuenta que al connectar un dispositivo por cable ponerlo en Lan o en la ubicacion que sea, sino puede que no grafique correctamente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Referencias =&lt;br /&gt;
*[http://www.guifi.net/proxy-debian manual debian de guifi.net]&lt;br /&gt;
*[http://asociacionjuvenilelcueto.info/node/156 manual de la associació Juvenil el Cueto (Rioja)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ca:Servidor_de_gràfiques]]&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/Archivo:SNPServices.png</id>
		<title>Archivo:SNPServices.png</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/Archivo:SNPServices.png"/>
				<updated>2012-11-11T22:19:17Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/M%C3%B3dulo_Drupal_Guifi.net</id>
		<title>Módulo Drupal Guifi.net</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/M%C3%B3dulo_Drupal_Guifi.net"/>
				<updated>2012-11-09T18:05:57Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: /* API */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;La [[Web Guifi.net|web de Guifi.net]] funciona con el gestor de contenidos Drupal.&lt;br /&gt;
&lt;br /&gt;
Para añadirle las funcionalidades de documentación de red libre se usa un módulo especial llamado drupal-guifi. Este módulo es software libre y está disponible en el repositorio de Gitorious&amp;lt;ref&amp;gt;http://gitorious.org/guifi/drupal-guifi&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
La portada está diseñada mediante plantillas y se pueden encontrar en otro repositorio de Gitorious&amp;lt;ref&amp;gt;http://gitorious.org/guifi/portada&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Historial de cambios ==&lt;br /&gt;
* [https://lists.guifi.net/pipermail/guifi-rdes/2012-June/024678.html Mapas y Google API v3], junio de 2012&lt;br /&gt;
&lt;br /&gt;
== Características ==&lt;br /&gt;
* Gestión de zonas y nodos&lt;br /&gt;
* [https://guifi.net/guifi/menu/stats/growthmap Mapa de crecimiento]&lt;br /&gt;
* [[Unsolclic]]&lt;br /&gt;
&lt;br /&gt;
=== API ===&lt;br /&gt;
El [[módulo Drupal Guifi.net]] implementa una '''API''' que permite a los desarrolladores crear aplicaciones externas que consulten y modifiquen la base de datos de Guifi.net. Las peticiones a la API se realizan mediante consultas de tipo GET del protocolo HTTP.&lt;br /&gt;
&lt;br /&gt;
La documentación de dicha API se encuentra en el repositorio drupal-guifi, en la carpeta contrib/api_doc/&amp;lt;ref&amp;gt;http://gitorious.org/guifi/drupal-guifi/trees/master/contrib/api_doc&amp;lt;/ref&amp;gt; y en la url [http://guifi.net/sites/all/modules/guifi/contrib/api_doc/index.php Documentació de l'API de guifi.net]. También hay disponible una librería PHP para trabajar más cómodamente con la API. Se puede encontrar en la carpeta contrib/api_client/&amp;lt;ref&amp;gt;http://gitorious.org/guifi/drupal-guifi/trees/master/contrib/api_client&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Las acciones posibles que se pueden realizar desde la API son las siguientes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Insertar en orden cronológico inverso!! --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#ececec;&amp;quot;&lt;br /&gt;
! Comando&lt;br /&gt;
! Descripción&lt;br /&gt;
! Ejemplo&lt;br /&gt;
|-&lt;br /&gt;
| guifi.auth.login&lt;br /&gt;
| Autentificar un usuario&lt;br /&gt;
| http://guifi.net/api?command=guifi.auth.login&amp;amp;username=&amp;amp;password=&lt;br /&gt;
|-&lt;br /&gt;
| guifi.zone.add&lt;br /&gt;
| Añadir una zona nueva&lt;br /&gt;
| http://guifi.net/api?command=guifi.zone.add&lt;br /&gt;
|-&lt;br /&gt;
| guifi.zone.update&lt;br /&gt;
| Actualizar una zona&lt;br /&gt;
| http://guifi.net/api?command=guifi.zone.update&lt;br /&gt;
|-&lt;br /&gt;
| guifi.zone.remove&lt;br /&gt;
| Borrar una zona&lt;br /&gt;
| http://guifi.net/api?command=guifi.zone.remove&lt;br /&gt;
|-&lt;br /&gt;
| guifi.zone.nearest&lt;br /&gt;
| Buscar la zona más cercana a un punto geográfico&lt;br /&gt;
| http://guifi.net/api?command=guifi.zone.nearest&lt;br /&gt;
|-&lt;br /&gt;
| guifi.node.add&lt;br /&gt;
| Añadir un nodo nuevo&lt;br /&gt;
| http://guifi.net/api?command=guifi.node.add&lt;br /&gt;
|-&lt;br /&gt;
| guifi.node.update&lt;br /&gt;
| Actualizar un nodo&lt;br /&gt;
| http://guifi.net/api?command=guifi.node.update&lt;br /&gt;
|-&lt;br /&gt;
| guifi.node.remove&lt;br /&gt;
| Borrar un nodo&lt;br /&gt;
| http://guifi.net/api?command=guifi.node.remove&lt;br /&gt;
|-&lt;br /&gt;
| guifi.device.add&lt;br /&gt;
| Añadir un nuevo dispositivo&lt;br /&gt;
| http://guifi.net/api?command=guifi.device.add&lt;br /&gt;
|-&lt;br /&gt;
| guifi.device.update&lt;br /&gt;
| Actualizar un dispositivo&lt;br /&gt;
| http://guifi.net/api?command=guifi.device.update&lt;br /&gt;
|-&lt;br /&gt;
| guifi.device.remove&lt;br /&gt;
| Borrar un dispositivo&lt;br /&gt;
| http://guifi.net/api?command=guifi.device.remove&lt;br /&gt;
|-&lt;br /&gt;
| guifi.radio.add&lt;br /&gt;
| Añadir una nueva radio&lt;br /&gt;
| http://guifi.net/api?command=guifi.radio.add&lt;br /&gt;
|-&lt;br /&gt;
| guifi.radio.update&lt;br /&gt;
| Actualizar una radio&lt;br /&gt;
| http://guifi.net/api?command=guifi.radio.update&lt;br /&gt;
|-&lt;br /&gt;
| guifi.radio.remove&lt;br /&gt;
| Borrar una radio&lt;br /&gt;
| http://guifi.net/api?command=guifi.radio.remove&lt;br /&gt;
|-&lt;br /&gt;
| guifi.radio.nearest&lt;br /&gt;
| Buscar las radios en modo AP más cercanas a un nodo&lt;br /&gt;
| http://guifi.net/api?command=guifi.radio.nearest&lt;br /&gt;
|-&lt;br /&gt;
| guifi.interface.add&lt;br /&gt;
| Añadir una nueva interfaz a una radio&lt;br /&gt;
| http://guifi.net/api?command=guifi.interface.add&lt;br /&gt;
|-&lt;br /&gt;
| guifi.interface.remove&lt;br /&gt;
| Borrar una interfaz de una radio&lt;br /&gt;
| http://guifi.net/api?command=guifi.interface.remove&lt;br /&gt;
|-&lt;br /&gt;
| guifi.link.add&lt;br /&gt;
| Añadir un nuevo enlace entre dos interfaces&lt;br /&gt;
| http://guifi.net/api?command=guifi.link.add&lt;br /&gt;
|-&lt;br /&gt;
| guifi.link.update&lt;br /&gt;
| Actualizar un enlace&lt;br /&gt;
| http://guifi.net/api?command=guifi.link.update&lt;br /&gt;
|-&lt;br /&gt;
| guifi.link.remove&lt;br /&gt;
| Borrar un enlace&lt;br /&gt;
| http://guifi.net/api?command=guifi.link.remove&lt;br /&gt;
|-&lt;br /&gt;
| guifi.misc.model&lt;br /&gt;
| Obtener los modelos de dispositivos soportados en Guifi.net&lt;br /&gt;
| http://guifi.net/api?command=guifi.misc.model&lt;br /&gt;
|- &lt;br /&gt;
| guifi.misc.manufacturer&lt;br /&gt;
| Obtener los fabricantes de dispositivos soportados en Guifi.net&lt;br /&gt;
| http://guifi.net/api?command=guifi.misc.manufacturer&lt;br /&gt;
|-&lt;br /&gt;
| guifi.misc.firmware&lt;br /&gt;
| Obtener los firmwares de dispositivos soportados en Guifi.net&lt;br /&gt;
| http://guifi.net/api?command=guifi.misc.firmware&lt;br /&gt;
|-&lt;br /&gt;
| guifi.misc.protocol&lt;br /&gt;
| Obtener los protocolos soportados en Guifi.net&lt;br /&gt;
| http://guifi.net/api?command=guifi.misc.protocol&lt;br /&gt;
|-&lt;br /&gt;
| guifi.misc.channel&lt;br /&gt;
| Obtener los canales de un protocolo soportados en Guifi.net&lt;br /&gt;
| http://guifi.net/api?command=guifi.misc.channel&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
'''MENSAJE OBTENIDO DE LISTAS DE CORREO PARA AGREGAR AQUI SI INTERESA'''&lt;br /&gt;
Para hacer uso de la capa de abstracción de base de datos que proporciona guifi_db.inc.php, o funciones ya desarrolladas tipo guifi_log, guifi_notify, etc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Roles de usuarios ===&lt;br /&gt;
Los roles definen lo que puede hacer cada usuario registrado. Por ejemplo: traducir páginas, modificar nodos que no son tuyos... etc.&lt;br /&gt;
&lt;br /&gt;
Más información aquí en [https://guifi.net/es/node/38115 Roles de la web]&lt;br /&gt;
&lt;br /&gt;
Por defecto, el usuario tiene el rol más básico. Si necesitas más permisos para hacer algo, pídelos en alguna de las [[listas de correo]] como guifi-hispano, guifi-usuaris o guifi-rdes.&lt;br /&gt;
&lt;br /&gt;
== Referencias ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Véase también ==&lt;br /&gt;
* [[Módulo apadrinamientos]]&lt;br /&gt;
* [[Web Guifi.net]]&lt;br /&gt;
&lt;br /&gt;
== Enlaces externos ==&lt;br /&gt;
* [http://drupal.org/ Sitio oficial de Drupal]&lt;br /&gt;
* [[wikipedia:es:Interfaz de programación de aplicaciones|API]] (Wikipedia)&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Desarrollo]]&lt;br /&gt;
[[Categoría:Web]]&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/SNPServices</id>
		<title>SNPServices</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/SNPServices"/>
				<updated>2012-11-07T09:36:59Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: /* Instalacion del servicio SNPServices mediante GIT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Servicio SNPServices ===&lt;br /&gt;
SNPServices es un servicio de gráficas...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El sistema de monitorización de la red se realiza mediante 3 sistemas principales. &lt;br /&gt;
Vea este documento para ver el esquema general http://es.wiki.guifi.net/wiki/Monitor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuración de servidor Cliente SNPServices'''&lt;br /&gt;
El cliente SNPServices recoge información de su red mas cercana. La almacena y se la entrega al servidor web en modo de gráficas que incrusta en el entorno de guifi.net.&lt;br /&gt;
Esta configuración es la que realizaras si quieres servir gráficos a la zona donde estas. Es muy probable que lo montes en el servidor proxy que tengáis, pero podría ser dedicado.&lt;br /&gt;
El procedimiento lo encontrarás aquí http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Servidor WEB'''&lt;br /&gt;
El servidor web de guifi, única ente que accede a las bases de datos del sistema.&lt;br /&gt;
Para montar un servicio WEB idéntico a www.guifi.net, o sea, un entorno de desarrollo se realiza mediante este procedimiento&lt;br /&gt;
http://es.wiki.guifi.net/wiki/Preparando_el_entorno_de_desarrollo&lt;br /&gt;
&lt;br /&gt;
'''Configuración de servidor MASTER SNPServices'''&lt;br /&gt;
Este servicio solo es alcanzable desde el cliente SNPServices. Solo existe un servicio como este y esta en la central de GUIFI.NET.&lt;br /&gt;
Desde aquí se crea el archivo CNML que se lo cede a los clientes SNPServices. Esta información se necesita para que los servicios SNPServices locales hagan sus comprobaciones de los sistemas cercanos.&lt;br /&gt;
Básicamente SNPServices sirve recopilar información general de la red que esta en la BBDD de GUIFI. Cuando un cliente SNPServices le pide información de su red, el servidor se la concede en formato CNML.&lt;br /&gt;
&lt;br /&gt;
=== Instalacion del servicio SNPServices mediante GIT===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Nota: Este metodo de instalacion depende de que el repositorio este actualizado y a fecha de 07/11/2012  no lo esta. &lt;br /&gt;
Me ha sido mas fácil la instalación mediante apt-get install.&amp;lt;/pre&amp;gt;&lt;br /&gt;
* [[Servidor de gráficas 1]]  (Debian/Ubuntu) método apt + configuración virtualhost apache&lt;br /&gt;
* [[Servidor de gráficas 2]] (Debian/Ubuntu) método dpkg&lt;br /&gt;
* [[Servidor de gráficas 3]] (Debian/Ubuntu) extendido&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El servicio SNPServices Master y Cliente se instala del mismo modo.&lt;br /&gt;
A diferencia entre ambos es que usan procedimientos diferentes en al ejecución de sus tareas. También alguno común.&lt;br /&gt;
&lt;br /&gt;
Para instalarlo se hace así&lt;br /&gt;
Nos creamos una cuenta en el repositorio gitorius. Clonamos el servicio snpservices para poder enviar nuestras mejoras. Lo descargamos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /var/www/html&lt;br /&gt;
git clone git://gitorious.org/guifi/snpservices.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
También se puede descargar mediante repositorio.&lt;br /&gt;
http://es.wiki.guifi.net/wiki/Configurar_Repositorio_apt_guifi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Configurar_Repositorio_apt_guifi|Configurar el Repositorio de apt de Guifi]]&lt;br /&gt;
&lt;br /&gt;
Una vez configurado el repositorio, descargamos servicio.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# apt-get install snpservices&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si quieres instalar el servicio SNPServices para servir gráficas sigue los pasos aqui&lt;br /&gt;
http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas&lt;br /&gt;
&lt;br /&gt;
A partir de ahora configuraremos el servicio SNPServices Master para servir datos a los clientes SNPServicves&lt;br /&gt;
&lt;br /&gt;
=== Configuración del servicio SNPServices Master ===&lt;br /&gt;
&lt;br /&gt;
.Se crea un alias que apunte a nuestra carpeta donde hemos instalado el servicio&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; Alias /snpservices /var/www/html/snpservices &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
. Creas la rarpeta /tmp y le das permisos de escritura&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;mkdir /tmp&lt;br /&gt;
chmod a+rw snpservices/tmp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
.Crea els ervicio en al base  de datos usando esta direccion&lt;br /&gt;
&amp;lt;pre&amp;gt; http://yourserver/snpservices&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
te saldra una pagina asi&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ERROR: No service specified&lt;br /&gt;
CNML services&lt;br /&gt;
Version: 2.0&lt;br /&gt;
USAGE:&lt;br /&gt;
index.php?call=[service][&amp;amp;parameter[=value]]&lt;br /&gt;
&lt;br /&gt;
services: help version phpinfo serverinfo [service]&lt;br /&gt;
  help&lt;br /&gt;
...sigue...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
si fueras un cliente, el procedimiento continua cambiando el servidor root al que te conectas modificando el archivo /common/config.php.&lt;br /&gt;
Es por esto que nos sale el error &amp;quot;ERROR: No service specified&amp;quot;, pero en este caso nosotros somos el root y aqui tenemos que poner un que representa al servidor web. Para guifi tenemos un valor reservado. Si quieres contactar con el servidor root, debes de pedirlo en los foros abiertos en las listas de desarrollo. Para cualquier entorno podria valer con poner otro servidor de gráficas.&lt;br /&gt;
&lt;br /&gt;
Tenemos un archivo llamado common/config.php.template que nos servirá de plantilla&lt;br /&gt;
&lt;br /&gt;
=== Configuración del archivo config.php ===&lt;br /&gt;
Vamos al grano.&lt;br /&gt;
&lt;br /&gt;
Aquí se configura el directorio raiz del servicio SNP. Esta variable es usada en varios sitios.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// snp_pat: full directory where snp services are located&lt;br /&gt;
$snp_path='/var/www/html/snpservices';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Este es el numero de nodo que nos ha dado el servidor web al crear el servicio SNP Cliente.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// SNPGraphServerID: Default Graph Server ID&lt;br /&gt;
$SNPGraphServerId = 6579;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Servicio root. El root de nuestro servidor guifi actual es la pagina web www.guifi.net&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// rootZone: which is the ROOT zone&lt;br /&gt;
$rootZone = ****; (valor reservado por seguridad)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aqui la direccion desde donde se enlaza a los servicios mediante web. Esta variable es usada en varios archivos de configuracion&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// SNPDataServer_url: without ending backslash, the url where the data is&lt;br /&gt;
$SNPDataServer_url = 'http://guifi.net';&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuracion del servicio MRTG creador de gráficas. Aqui le diremos donde almacenar los datos.&lt;br /&gt;
Tienes que crear el directorio mrtg en /snpservices/mrtg&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// MRTGConfigSource: mrtg csv data&lt;br /&gt;
// As a input, could be either a local (to be created from&lt;br /&gt;
// cached CNML file, or remote&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
El programa cnml2mrtfcsv es el servicio SNPService principal y busca en la BBDD del servidor web los cambios que han habido. Si ha cambiado algo desde la ultima actualización, genera de nuevo el archivo CNML.&lt;br /&gt;
Se tiene que modificar a la ruta que tengamos nosotros, normalmente dentro de ./graphs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$MRTGConfigSource='http://proves.elserrat.guifi.net/snpservices/graphs/cnml2mrtgcsv.php';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Aqui almacenamos los datos mrtg que recojamos. La carpeta data no esta creada por defecto. La tenemos que crear mediante mkdir data desde el directorio snpservice&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//$MRTGConfigSource='../data/guifi_mrtg.csv';&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Configuracino para la creacion de archivo CNML&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// CNMLSource: url for CNML node query, use sprintf syntax&lt;br /&gt;
// MySQL-drupal source&lt;br /&gt;
//$CNMLSource='http://proves.elserrat.guifi.net/guifi/cnml/%s/node';&lt;br /&gt;
// Cached CNML source (prefered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Aqui almacenamos los datos CNML que recojamos&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$CNMLSource='http://proves.elserrat.guifi.net/snpservices/common/qnodes.php?nodes=%s';&lt;br /&gt;
$CNMLData='../data/guifi.cnml';&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Configuracion de herramienta rrdtool. transforma tdatos en archivi .rrd para poder ser exportado. No hace falta hacer nada aqui&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// rrdtool parameters&lt;br /&gt;
$rrdtool_path='/usr/bin/rrdtool';&lt;br /&gt;
$rrddb_path='/home1/comesfa/mrtg/logs/';&lt;br /&gt;
$rrdimg_path='/home1/comesfa/mrtg/images/';&lt;br /&gt;
&lt;br /&gt;
// which version does have this server? &lt;br /&gt;
// currently supported versions are:&lt;br /&gt;
// 1.2&lt;br /&gt;
// 1.3&lt;br /&gt;
$rrdtool_version = &amp;quot;1.3&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Configuracion de entorno MRTG. No hace falta hacer nada aqui&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// mrtg local header&lt;br /&gt;
$rrdtool_header='# PathAdd: /usr/local/rrdtool-1.2.12/bin&lt;br /&gt;
# LibAdd: /usr/local/rrdtool-1.2.12/lib/perl/5.8.8/i386-linux-thread-multi&lt;br /&gt;
HtmlDir: %s&lt;br /&gt;
ImageDir: %s &lt;br /&gt;
LogDir: %s&lt;br /&gt;
LogFormat: rrdtool&lt;br /&gt;
ThreshDir: %s&lt;br /&gt;
Forks: 12&lt;br /&gt;
';&lt;br /&gt;
&lt;br /&gt;
// mrtg ping template&lt;br /&gt;
$mrtg_ping_template ='Title[%s_ping]: Temps del ping de %s &lt;br /&gt;
PageTop[%s_ping]: &amp;lt;H1&amp;gt;Lat&amp;amp;egrave;ncia %s&amp;lt;/H1&amp;gt;&lt;br /&gt;
     &amp;lt;TABLE&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;System:&amp;lt;/TD&amp;gt;     &amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Maintainer:&amp;lt;/TD&amp;gt; &amp;lt;TD&amp;gt;guifi@guifi.net&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Description:&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;ping&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;IP:&amp;lt;/TD&amp;gt;         &amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;/TABLE&amp;gt;&lt;br /&gt;
Target[%s_ping]: `/etc/mrtg/ping.sh %s`&lt;br /&gt;
MaxBytes[%s_ping]: 2000&lt;br /&gt;
Options[%s_ping]: growright,unknaszero,nopercent,gauge&lt;br /&gt;
LegendI[%s_ping]: Perduts %&lt;br /&gt;
LegendO[%s_ping]: Temps mig&lt;br /&gt;
Legend1[%s_ping]: Temps max. en ms&lt;br /&gt;
Legend2[%s_ping]: Temps min. en ms&lt;br /&gt;
YLegend[%s_ping]: RTT (ms)&lt;br /&gt;
';&lt;br /&gt;
&lt;br /&gt;
$mrtg_traffic_template='Target[%s_traf]: %s:public@%s:&lt;br /&gt;
SetEnv[%s_traf]: MRTG_INT_IP=&amp;quot;%s&amp;quot; MRTG_INT_DESCR=&amp;quot;%s&amp;quot;&lt;br /&gt;
MaxBytes[%s_traf]: 104857600&lt;br /&gt;
Title[%s_traf]: Tr&amp;amp;agrave;nsit a %s de %s&lt;br /&gt;
PageTop[%s_traf]: &amp;lt;H1&amp;gt;Tr&amp;amp;agrave;nsit a %s de %s&amp;lt;/H1&amp;gt;&lt;br /&gt;
     &amp;lt;TABLE&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;System:&amp;lt;/TD&amp;gt;     &amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Maintainer:&amp;lt;/TD&amp;gt; &amp;lt;TD&amp;gt;guifi@guifi.net&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Description:&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Max Speed:&amp;lt;/TD&amp;gt;  &amp;lt;TD&amp;gt;100.0 Mbytes/s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;/TABLE&amp;gt;&lt;br /&gt;
';&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arrancamos y actualizamos datos ===&lt;br /&gt;
Para arrancar y actualizar datos se hace mediante un comando llamado refresh.sh&lt;br /&gt;
Mas adelante configuraremos para que refresque solo. Primero lo ejecutaremos manualmente&lt;br /&gt;
&lt;br /&gt;
Lo he arrancado y me da el siguiente error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# ./refresh.sh &lt;br /&gt;
Getting CNML file&lt;br /&gt;
Error redaing CNML source\nroot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Esto es porque no hay configurado algu parametro. Entramos en refresh.sh y este nos envia a refresh.cnml.php&lt;br /&gt;
refress.sh llama a dos archivos php.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# cat refresh.sh &lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# Refreshing CNML local file (optional)&lt;br /&gt;
php refresh_cnml.php&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configurar refresh.cnml.php ===&lt;br /&gt;
Veamos ahora el archivo de configuracion refresh.cnml.php&lt;br /&gt;
&lt;br /&gt;
Si queremos ejecutar este archivo lo hacemos mediante la llamada a php&lt;br /&gt;
Aqui vemos que error genera y podremos ir a ver donde esta ocurriendo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Este es el archivo. Primero carga una configuración común en el archivo config.php. Sino busca la plantilla config.php.template&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
  if (file_exists(&amp;quot;config.php&amp;quot;)) {&lt;br /&gt;
    include_once(&amp;quot;./config.php&amp;quot;);&lt;br /&gt;
  } else {&lt;br /&gt;
    include_once(&amp;quot;config.php.template&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  $minX = 999;&lt;br /&gt;
  $minY = 999;&lt;br /&gt;
  $maxX = -999;&lt;br /&gt;
  $maxY = -999;&lt;br /&gt;
&lt;br /&gt;
  $members = array();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Intenta abrir archivo ya creado. Tenemos que modificar la ruta donde almacena esta informacion. Compara la fecha de actualización anterior y la actual para decidir si hacer un refresco completo o no.&lt;br /&gt;
si todo esta actualizado, ejecuta exit() y acaba.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  $hlastnow = @fopen($SNPDataServer_url.&amp;quot;/guifi/refresh/cnml&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    or die('Error reading last timestamp\n');&lt;br /&gt;
  $last_now = fgets($hlastnow);&lt;br /&gt;
  fclose($hlastnow);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_update.cnml&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
  if (($hlast) and ($last_now == fgets($hlast))) {&lt;br /&gt;
    fclose($hlast);&lt;br /&gt;
    echo &amp;quot;No changes.\n&amp;quot;;&lt;br /&gt;
    exit();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si está mal configurado estos parámetros, tendremos el siguiente error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# php refresh_cnml.php &lt;br /&gt;
Getting CNML file&lt;br /&gt;
Error reading last timestamp&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aqui es cuando empieza la búsqueda de cambios.&lt;br /&gt;
El primer open abre un archivo de la web con los contenidos. estos son comparados con el archivo que tenemos en /tmp. Si son diferentes, realiza una descarga y lo actualiza.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Getting CNML file\n&amp;quot;;&lt;br /&gt;
  $hcnml = @fopen($SNPDataServer_url.&amp;quot;/guifi/cnml/&amp;quot;.$rootZone.&amp;quot;/detail&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    or die ('Error redaing CNML source\n');&lt;br /&gt;
  $wcnml = @fopen(&amp;quot;../data/guifi.cnml.tmp&amp;quot;, &amp;quot;w&amp;quot;);&lt;br /&gt;
  while (!feof($hcnml)) {&lt;br /&gt;
    $buffer = fgets($hcnml, 4096);&lt;br /&gt;
    fwrite($wcnml,$buffer);&lt;br /&gt;
  }&lt;br /&gt;
  fclose($hcnml);&lt;br /&gt;
  fclose($wcnml);&lt;br /&gt;
  exec (&amp;quot;/bin/cp ../data/guifi.cnml.tmp ../data/guifi.cnml&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_update.cnml&amp;quot;, &amp;quot;w&amp;quot;) or die('Error!');&lt;br /&gt;
  fwrite($hlast,$last_now);&lt;br /&gt;
  fclose($hlast);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
                  &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si esta mal configurado, recibiremos este error. Tambien puede identificar falta de recursos para Apache.Mira el log de Apache.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# php refresh_cnml.php &lt;br /&gt;
Getting CNML file&lt;br /&gt;
Error redaing CNML source\n&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices[Sat May 22 00:39:01 2010] [notice] child pid 14787 exit signal Segmentation fault (11)/common#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
El sistema dentro de la web que crea el archivo CNML es un proceso de un modulo de Drupal del sistema guifi&lt;br /&gt;
Lo encontraras aqui&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/sites/all/modules/guifi/guifi_cnml.inc.php&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora tenemos dentro de /data dos archivos iguales llamados guifi.cnml i guifi.cnml.tmp con os contenidos encontrados.&lt;br /&gt;
También actualiza datos en /tmp/last_update.cnml que se usara nuevamente en la próxima actualizacion&lt;br /&gt;
&lt;br /&gt;
=== Prueba de servicio ===&lt;br /&gt;
&lt;br /&gt;
Un cliente con servici SNPService usara el servicio SNPService Master recien creado para preguntar informacion acerca un nodo de esta manera&lt;br /&gt;
http://www.guifi.net/snpservices/graphs/cnml2mrtgcsv.php?server=6558&lt;br /&gt;
&lt;br /&gt;
Esto nos devuelve un archivo CNML como este&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
46491,#VicPuigsacalm2Rd1,10.138.48.51,wlan1;VicVcPgsclm2Rd1CPE0,Planned&lt;br /&gt;
38297,#VicCnvntCrmltsRd1,10.138.160.39,ath0;Vic-1-NOVcCnvntCrmltsRd1CPE0,Working&lt;br /&gt;
45489,#Vic11Set38Rd1,10.138.168.170,wlan1;Vic-1-NOVc11St38Rd1CPE0,Planned&lt;br /&gt;
44406,#Vic11set40Rd2,10.138.101.4,ath0;Vic-1-NO11st40Rd2CPE0,Working&lt;br /&gt;
33929,#Vic11setembre25Rd1,10.138.22.87,wifi0;Vic-1-NOVc11stmbr25Rd1CPE0,Working&lt;br /&gt;
18809,#VicAGrifollRd2,10.138.14.104,6,Working&lt;br /&gt;
40356,#VicAlbergCanongeRd2,10.138.10.80,Lan/Lan;Vic-1-NOVclbrgCnngRd2CPE0,Working&lt;br /&gt;
22068,#VicAlemanyRd1,10.138.14.135,wifi0;Vic-1 NOVclmnyRd1CPE0,Working&lt;br /&gt;
30303,#VicAlemanyRd2,10.138.14.201,wifi0;Vic-1 NOVclmnyRd2CPE0,Planned&lt;br /&gt;
36620,#VicAlinaRd2,10.138.10.72,wlan1;Vic-1-NOVclnRd2CPE0,Working&lt;br /&gt;
7211,#VicAngladaRd1,10.138.10.73,Lan/Lan;VicAngladaRadio1-0,Working&lt;br /&gt;
19857,#VicAnnaBRd2,10.138.11.62,wifi0;VicVcnnBRd2CPE0,Working&lt;br /&gt;
14203,#VicAnnaMaxenchsRd1,10.138.22.41,wifi0;VicVcnnMxnchsRd1CPE0,Working&lt;br /&gt;
13655,#VicAnnaPratRd1,10.138.11.51,;VicVcnnPrtRd2CPE0,Working&lt;br /&gt;
17035,#VicAnnaSolerRd3,10.138.22.196,6,Working&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La configuracion puede que no funcione. Para ver errores, pedir a apache que nos mustre su log&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:~# tail -f /var/log/apache2/*.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Yo me he encotnrado este error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Mon Oct 22 23:27:07 2012] [error] [client 192.168.1.40] PHP Warning:  DOMDocument::load(): &lt;br /&gt;
Premature end of data in tag html line 3 in /var/www/drupal-6.26/snpservices/data/guifi.cnml, line: 149 in /var/www/drupal-6.26/snpservices/graphs/cnml2mrtgcsv.php on line 270&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tambien este. Parece que al intentar cargar la zona, da un error Apache a causa de falta de memoria al cargar todos los datos en una variable&lt;br /&gt;
Para solucioanrlo se tiene que modificar el limite d ememoria para php dentro de /etc/php5/apache/php.ini&lt;br /&gt;
La variable se llama &lt;br /&gt;
memory_limit = 128M&lt;br /&gt;
Parece que si lo pones a -1 equivale a que no tenga limite.&lt;br /&gt;
http://es1.php.net/manual/es/ini.core.php#ini.memory-limit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
==&amp;gt; /var/log/apache2/error.log &amp;lt;==&lt;br /&gt;
[Tue Oct 23 20:54:16 2012] [error] [client 192.168.1.44] PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 20 bytes) in /var/www/drupal-6.26/includes/database.mysqli.inc on line 150&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De todas maneras, los recursos son limitados. Este mensaje en Apache identifica lo msimo. Falta de recursos. En mi caso, como no tengo mas, hago una consulta mas pequeña para poder probar.el error que me salia es este&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Sat May 22 00:39:01 2010] [notice] child pid 14787 exit signal Segmentation fault (11)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
He aprendido la causas aquí http://www.webhostingtalk.com/showthread.php?t=950165&lt;br /&gt;
&lt;br /&gt;
=== Migración de un servidor a otro ===&lt;br /&gt;
Si quieres migrar un servidor de gráficas a otro servidor manteniendo las gráficas es tan simple como configurar el snpservices con el mismo ID que el antiguo y copiar los ficheros .rrd de /var/lib/snpservices/rrdb de la máquian vieja a la nueva.&lt;br /&gt;
&lt;br /&gt;
Si la máquina nueva funciona con una arquitectura (por ejemplo, antes 32bits y ahora 64bits), los ficheros .rrd deben ser reconvertidos. Para ello hay que convertir el .rrd a XML y volver a crear el fichero .rrd a partir del XML.&lt;br /&gt;
&lt;br /&gt;
En la máquina de 32bits ejecutamos esto:&lt;br /&gt;
:rrdtool dump fitxer_32bits_.rrd &amp;gt; fitxer.xml&lt;br /&gt;
&lt;br /&gt;
Copiamos el ficheor a la nueva máquina de 64bits y ejecutamos:&lt;br /&gt;
:rrdtool restore fitxer.xml&lt;br /&gt;
&lt;br /&gt;
Y queda generado el fichero .rrd&lt;br /&gt;
&lt;br /&gt;
[[Categoría:SNPServices]]&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/SNPServices</id>
		<title>SNPServices</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/SNPServices"/>
				<updated>2012-11-07T09:36:31Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: /* Instalacion del servicio SNPServices mediante GIT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Servicio SNPServices ===&lt;br /&gt;
SNPServices es un servicio de gráficas...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El sistema de monitorización de la red se realiza mediante 3 sistemas principales. &lt;br /&gt;
Vea este documento para ver el esquema general http://es.wiki.guifi.net/wiki/Monitor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuración de servidor Cliente SNPServices'''&lt;br /&gt;
El cliente SNPServices recoge información de su red mas cercana. La almacena y se la entrega al servidor web en modo de gráficas que incrusta en el entorno de guifi.net.&lt;br /&gt;
Esta configuración es la que realizaras si quieres servir gráficos a la zona donde estas. Es muy probable que lo montes en el servidor proxy que tengáis, pero podría ser dedicado.&lt;br /&gt;
El procedimiento lo encontrarás aquí http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Servidor WEB'''&lt;br /&gt;
El servidor web de guifi, única ente que accede a las bases de datos del sistema.&lt;br /&gt;
Para montar un servicio WEB idéntico a www.guifi.net, o sea, un entorno de desarrollo se realiza mediante este procedimiento&lt;br /&gt;
http://es.wiki.guifi.net/wiki/Preparando_el_entorno_de_desarrollo&lt;br /&gt;
&lt;br /&gt;
'''Configuración de servidor MASTER SNPServices'''&lt;br /&gt;
Este servicio solo es alcanzable desde el cliente SNPServices. Solo existe un servicio como este y esta en la central de GUIFI.NET.&lt;br /&gt;
Desde aquí se crea el archivo CNML que se lo cede a los clientes SNPServices. Esta información se necesita para que los servicios SNPServices locales hagan sus comprobaciones de los sistemas cercanos.&lt;br /&gt;
Básicamente SNPServices sirve recopilar información general de la red que esta en la BBDD de GUIFI. Cuando un cliente SNPServices le pide información de su red, el servidor se la concede en formato CNML.&lt;br /&gt;
&lt;br /&gt;
=== Instalacion del servicio SNPServices mediante GIT===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Nota: Este metodo de instalacion depende de que el repositorio este actualizado y a fecha de 07/11/2012  no loe sta. Me ha sido mas facil la isntalacion mediante apt-get install.&amp;lt;/pre&amp;gt;&lt;br /&gt;
* [[Servidor de gráficas 1]]  (Debian/Ubuntu) método apt + configuración virtualhost apache&lt;br /&gt;
* [[Servidor de gráficas 2]] (Debian/Ubuntu) método dpkg&lt;br /&gt;
* [[Servidor de gráficas 3]] (Debian/Ubuntu) extendido&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El servicio SNPServices Master y Cliente se instala del mismo modo.&lt;br /&gt;
A diferencia entre ambos es que usan procedimientos diferentes en al ejecución de sus tareas. También alguno común.&lt;br /&gt;
&lt;br /&gt;
Para instalarlo se hace así&lt;br /&gt;
Nos creamos una cuenta en el repositorio gitorius. Clonamos el servicio snpservices para poder enviar nuestras mejoras. Lo descargamos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /var/www/html&lt;br /&gt;
git clone git://gitorious.org/guifi/snpservices.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
También se puede descargar mediante repositorio.&lt;br /&gt;
http://es.wiki.guifi.net/wiki/Configurar_Repositorio_apt_guifi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Configurar_Repositorio_apt_guifi|Configurar el Repositorio de apt de Guifi]]&lt;br /&gt;
&lt;br /&gt;
Una vez configurado el repositorio, descargamos servicio.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# apt-get install snpservices&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si quieres instalar el servicio SNPServices para servir gráficas sigue los pasos aqui&lt;br /&gt;
http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas&lt;br /&gt;
&lt;br /&gt;
A partir de ahora configuraremos el servicio SNPServices Master para servir datos a los clientes SNPServicves&lt;br /&gt;
&lt;br /&gt;
=== Configuración del servicio SNPServices Master ===&lt;br /&gt;
&lt;br /&gt;
.Se crea un alias que apunte a nuestra carpeta donde hemos instalado el servicio&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; Alias /snpservices /var/www/html/snpservices &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
. Creas la rarpeta /tmp y le das permisos de escritura&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;mkdir /tmp&lt;br /&gt;
chmod a+rw snpservices/tmp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
.Crea els ervicio en al base  de datos usando esta direccion&lt;br /&gt;
&amp;lt;pre&amp;gt; http://yourserver/snpservices&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
te saldra una pagina asi&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ERROR: No service specified&lt;br /&gt;
CNML services&lt;br /&gt;
Version: 2.0&lt;br /&gt;
USAGE:&lt;br /&gt;
index.php?call=[service][&amp;amp;parameter[=value]]&lt;br /&gt;
&lt;br /&gt;
services: help version phpinfo serverinfo [service]&lt;br /&gt;
  help&lt;br /&gt;
...sigue...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
si fueras un cliente, el procedimiento continua cambiando el servidor root al que te conectas modificando el archivo /common/config.php.&lt;br /&gt;
Es por esto que nos sale el error &amp;quot;ERROR: No service specified&amp;quot;, pero en este caso nosotros somos el root y aqui tenemos que poner un que representa al servidor web. Para guifi tenemos un valor reservado. Si quieres contactar con el servidor root, debes de pedirlo en los foros abiertos en las listas de desarrollo. Para cualquier entorno podria valer con poner otro servidor de gráficas.&lt;br /&gt;
&lt;br /&gt;
Tenemos un archivo llamado common/config.php.template que nos servirá de plantilla&lt;br /&gt;
&lt;br /&gt;
=== Configuración del archivo config.php ===&lt;br /&gt;
Vamos al grano.&lt;br /&gt;
&lt;br /&gt;
Aquí se configura el directorio raiz del servicio SNP. Esta variable es usada en varios sitios.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// snp_pat: full directory where snp services are located&lt;br /&gt;
$snp_path='/var/www/html/snpservices';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Este es el numero de nodo que nos ha dado el servidor web al crear el servicio SNP Cliente.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// SNPGraphServerID: Default Graph Server ID&lt;br /&gt;
$SNPGraphServerId = 6579;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Servicio root. El root de nuestro servidor guifi actual es la pagina web www.guifi.net&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// rootZone: which is the ROOT zone&lt;br /&gt;
$rootZone = ****; (valor reservado por seguridad)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aqui la direccion desde donde se enlaza a los servicios mediante web. Esta variable es usada en varios archivos de configuracion&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// SNPDataServer_url: without ending backslash, the url where the data is&lt;br /&gt;
$SNPDataServer_url = 'http://guifi.net';&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuracion del servicio MRTG creador de gráficas. Aqui le diremos donde almacenar los datos.&lt;br /&gt;
Tienes que crear el directorio mrtg en /snpservices/mrtg&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// MRTGConfigSource: mrtg csv data&lt;br /&gt;
// As a input, could be either a local (to be created from&lt;br /&gt;
// cached CNML file, or remote&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
El programa cnml2mrtfcsv es el servicio SNPService principal y busca en la BBDD del servidor web los cambios que han habido. Si ha cambiado algo desde la ultima actualización, genera de nuevo el archivo CNML.&lt;br /&gt;
Se tiene que modificar a la ruta que tengamos nosotros, normalmente dentro de ./graphs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$MRTGConfigSource='http://proves.elserrat.guifi.net/snpservices/graphs/cnml2mrtgcsv.php';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Aqui almacenamos los datos mrtg que recojamos. La carpeta data no esta creada por defecto. La tenemos que crear mediante mkdir data desde el directorio snpservice&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//$MRTGConfigSource='../data/guifi_mrtg.csv';&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Configuracino para la creacion de archivo CNML&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// CNMLSource: url for CNML node query, use sprintf syntax&lt;br /&gt;
// MySQL-drupal source&lt;br /&gt;
//$CNMLSource='http://proves.elserrat.guifi.net/guifi/cnml/%s/node';&lt;br /&gt;
// Cached CNML source (prefered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Aqui almacenamos los datos CNML que recojamos&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$CNMLSource='http://proves.elserrat.guifi.net/snpservices/common/qnodes.php?nodes=%s';&lt;br /&gt;
$CNMLData='../data/guifi.cnml';&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Configuracion de herramienta rrdtool. transforma tdatos en archivi .rrd para poder ser exportado. No hace falta hacer nada aqui&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// rrdtool parameters&lt;br /&gt;
$rrdtool_path='/usr/bin/rrdtool';&lt;br /&gt;
$rrddb_path='/home1/comesfa/mrtg/logs/';&lt;br /&gt;
$rrdimg_path='/home1/comesfa/mrtg/images/';&lt;br /&gt;
&lt;br /&gt;
// which version does have this server? &lt;br /&gt;
// currently supported versions are:&lt;br /&gt;
// 1.2&lt;br /&gt;
// 1.3&lt;br /&gt;
$rrdtool_version = &amp;quot;1.3&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Configuracion de entorno MRTG. No hace falta hacer nada aqui&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// mrtg local header&lt;br /&gt;
$rrdtool_header='# PathAdd: /usr/local/rrdtool-1.2.12/bin&lt;br /&gt;
# LibAdd: /usr/local/rrdtool-1.2.12/lib/perl/5.8.8/i386-linux-thread-multi&lt;br /&gt;
HtmlDir: %s&lt;br /&gt;
ImageDir: %s &lt;br /&gt;
LogDir: %s&lt;br /&gt;
LogFormat: rrdtool&lt;br /&gt;
ThreshDir: %s&lt;br /&gt;
Forks: 12&lt;br /&gt;
';&lt;br /&gt;
&lt;br /&gt;
// mrtg ping template&lt;br /&gt;
$mrtg_ping_template ='Title[%s_ping]: Temps del ping de %s &lt;br /&gt;
PageTop[%s_ping]: &amp;lt;H1&amp;gt;Lat&amp;amp;egrave;ncia %s&amp;lt;/H1&amp;gt;&lt;br /&gt;
     &amp;lt;TABLE&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;System:&amp;lt;/TD&amp;gt;     &amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Maintainer:&amp;lt;/TD&amp;gt; &amp;lt;TD&amp;gt;guifi@guifi.net&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Description:&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;ping&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;IP:&amp;lt;/TD&amp;gt;         &amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;/TABLE&amp;gt;&lt;br /&gt;
Target[%s_ping]: `/etc/mrtg/ping.sh %s`&lt;br /&gt;
MaxBytes[%s_ping]: 2000&lt;br /&gt;
Options[%s_ping]: growright,unknaszero,nopercent,gauge&lt;br /&gt;
LegendI[%s_ping]: Perduts %&lt;br /&gt;
LegendO[%s_ping]: Temps mig&lt;br /&gt;
Legend1[%s_ping]: Temps max. en ms&lt;br /&gt;
Legend2[%s_ping]: Temps min. en ms&lt;br /&gt;
YLegend[%s_ping]: RTT (ms)&lt;br /&gt;
';&lt;br /&gt;
&lt;br /&gt;
$mrtg_traffic_template='Target[%s_traf]: %s:public@%s:&lt;br /&gt;
SetEnv[%s_traf]: MRTG_INT_IP=&amp;quot;%s&amp;quot; MRTG_INT_DESCR=&amp;quot;%s&amp;quot;&lt;br /&gt;
MaxBytes[%s_traf]: 104857600&lt;br /&gt;
Title[%s_traf]: Tr&amp;amp;agrave;nsit a %s de %s&lt;br /&gt;
PageTop[%s_traf]: &amp;lt;H1&amp;gt;Tr&amp;amp;agrave;nsit a %s de %s&amp;lt;/H1&amp;gt;&lt;br /&gt;
     &amp;lt;TABLE&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;System:&amp;lt;/TD&amp;gt;     &amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Maintainer:&amp;lt;/TD&amp;gt; &amp;lt;TD&amp;gt;guifi@guifi.net&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Description:&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Max Speed:&amp;lt;/TD&amp;gt;  &amp;lt;TD&amp;gt;100.0 Mbytes/s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;/TABLE&amp;gt;&lt;br /&gt;
';&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arrancamos y actualizamos datos ===&lt;br /&gt;
Para arrancar y actualizar datos se hace mediante un comando llamado refresh.sh&lt;br /&gt;
Mas adelante configuraremos para que refresque solo. Primero lo ejecutaremos manualmente&lt;br /&gt;
&lt;br /&gt;
Lo he arrancado y me da el siguiente error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# ./refresh.sh &lt;br /&gt;
Getting CNML file&lt;br /&gt;
Error redaing CNML source\nroot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Esto es porque no hay configurado algu parametro. Entramos en refresh.sh y este nos envia a refresh.cnml.php&lt;br /&gt;
refress.sh llama a dos archivos php.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# cat refresh.sh &lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# Refreshing CNML local file (optional)&lt;br /&gt;
php refresh_cnml.php&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configurar refresh.cnml.php ===&lt;br /&gt;
Veamos ahora el archivo de configuracion refresh.cnml.php&lt;br /&gt;
&lt;br /&gt;
Si queremos ejecutar este archivo lo hacemos mediante la llamada a php&lt;br /&gt;
Aqui vemos que error genera y podremos ir a ver donde esta ocurriendo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Este es el archivo. Primero carga una configuración común en el archivo config.php. Sino busca la plantilla config.php.template&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
  if (file_exists(&amp;quot;config.php&amp;quot;)) {&lt;br /&gt;
    include_once(&amp;quot;./config.php&amp;quot;);&lt;br /&gt;
  } else {&lt;br /&gt;
    include_once(&amp;quot;config.php.template&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  $minX = 999;&lt;br /&gt;
  $minY = 999;&lt;br /&gt;
  $maxX = -999;&lt;br /&gt;
  $maxY = -999;&lt;br /&gt;
&lt;br /&gt;
  $members = array();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Intenta abrir archivo ya creado. Tenemos que modificar la ruta donde almacena esta informacion. Compara la fecha de actualización anterior y la actual para decidir si hacer un refresco completo o no.&lt;br /&gt;
si todo esta actualizado, ejecuta exit() y acaba.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  $hlastnow = @fopen($SNPDataServer_url.&amp;quot;/guifi/refresh/cnml&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    or die('Error reading last timestamp\n');&lt;br /&gt;
  $last_now = fgets($hlastnow);&lt;br /&gt;
  fclose($hlastnow);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_update.cnml&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
  if (($hlast) and ($last_now == fgets($hlast))) {&lt;br /&gt;
    fclose($hlast);&lt;br /&gt;
    echo &amp;quot;No changes.\n&amp;quot;;&lt;br /&gt;
    exit();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si está mal configurado estos parámetros, tendremos el siguiente error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# php refresh_cnml.php &lt;br /&gt;
Getting CNML file&lt;br /&gt;
Error reading last timestamp&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aqui es cuando empieza la búsqueda de cambios.&lt;br /&gt;
El primer open abre un archivo de la web con los contenidos. estos son comparados con el archivo que tenemos en /tmp. Si son diferentes, realiza una descarga y lo actualiza.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Getting CNML file\n&amp;quot;;&lt;br /&gt;
  $hcnml = @fopen($SNPDataServer_url.&amp;quot;/guifi/cnml/&amp;quot;.$rootZone.&amp;quot;/detail&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    or die ('Error redaing CNML source\n');&lt;br /&gt;
  $wcnml = @fopen(&amp;quot;../data/guifi.cnml.tmp&amp;quot;, &amp;quot;w&amp;quot;);&lt;br /&gt;
  while (!feof($hcnml)) {&lt;br /&gt;
    $buffer = fgets($hcnml, 4096);&lt;br /&gt;
    fwrite($wcnml,$buffer);&lt;br /&gt;
  }&lt;br /&gt;
  fclose($hcnml);&lt;br /&gt;
  fclose($wcnml);&lt;br /&gt;
  exec (&amp;quot;/bin/cp ../data/guifi.cnml.tmp ../data/guifi.cnml&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_update.cnml&amp;quot;, &amp;quot;w&amp;quot;) or die('Error!');&lt;br /&gt;
  fwrite($hlast,$last_now);&lt;br /&gt;
  fclose($hlast);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
                  &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si esta mal configurado, recibiremos este error. Tambien puede identificar falta de recursos para Apache.Mira el log de Apache.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# php refresh_cnml.php &lt;br /&gt;
Getting CNML file&lt;br /&gt;
Error redaing CNML source\n&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices[Sat May 22 00:39:01 2010] [notice] child pid 14787 exit signal Segmentation fault (11)/common#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
El sistema dentro de la web que crea el archivo CNML es un proceso de un modulo de Drupal del sistema guifi&lt;br /&gt;
Lo encontraras aqui&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/sites/all/modules/guifi/guifi_cnml.inc.php&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora tenemos dentro de /data dos archivos iguales llamados guifi.cnml i guifi.cnml.tmp con os contenidos encontrados.&lt;br /&gt;
También actualiza datos en /tmp/last_update.cnml que se usara nuevamente en la próxima actualizacion&lt;br /&gt;
&lt;br /&gt;
=== Prueba de servicio ===&lt;br /&gt;
&lt;br /&gt;
Un cliente con servici SNPService usara el servicio SNPService Master recien creado para preguntar informacion acerca un nodo de esta manera&lt;br /&gt;
http://www.guifi.net/snpservices/graphs/cnml2mrtgcsv.php?server=6558&lt;br /&gt;
&lt;br /&gt;
Esto nos devuelve un archivo CNML como este&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
46491,#VicPuigsacalm2Rd1,10.138.48.51,wlan1;VicVcPgsclm2Rd1CPE0,Planned&lt;br /&gt;
38297,#VicCnvntCrmltsRd1,10.138.160.39,ath0;Vic-1-NOVcCnvntCrmltsRd1CPE0,Working&lt;br /&gt;
45489,#Vic11Set38Rd1,10.138.168.170,wlan1;Vic-1-NOVc11St38Rd1CPE0,Planned&lt;br /&gt;
44406,#Vic11set40Rd2,10.138.101.4,ath0;Vic-1-NO11st40Rd2CPE0,Working&lt;br /&gt;
33929,#Vic11setembre25Rd1,10.138.22.87,wifi0;Vic-1-NOVc11stmbr25Rd1CPE0,Working&lt;br /&gt;
18809,#VicAGrifollRd2,10.138.14.104,6,Working&lt;br /&gt;
40356,#VicAlbergCanongeRd2,10.138.10.80,Lan/Lan;Vic-1-NOVclbrgCnngRd2CPE0,Working&lt;br /&gt;
22068,#VicAlemanyRd1,10.138.14.135,wifi0;Vic-1 NOVclmnyRd1CPE0,Working&lt;br /&gt;
30303,#VicAlemanyRd2,10.138.14.201,wifi0;Vic-1 NOVclmnyRd2CPE0,Planned&lt;br /&gt;
36620,#VicAlinaRd2,10.138.10.72,wlan1;Vic-1-NOVclnRd2CPE0,Working&lt;br /&gt;
7211,#VicAngladaRd1,10.138.10.73,Lan/Lan;VicAngladaRadio1-0,Working&lt;br /&gt;
19857,#VicAnnaBRd2,10.138.11.62,wifi0;VicVcnnBRd2CPE0,Working&lt;br /&gt;
14203,#VicAnnaMaxenchsRd1,10.138.22.41,wifi0;VicVcnnMxnchsRd1CPE0,Working&lt;br /&gt;
13655,#VicAnnaPratRd1,10.138.11.51,;VicVcnnPrtRd2CPE0,Working&lt;br /&gt;
17035,#VicAnnaSolerRd3,10.138.22.196,6,Working&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La configuracion puede que no funcione. Para ver errores, pedir a apache que nos mustre su log&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:~# tail -f /var/log/apache2/*.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Yo me he encotnrado este error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Mon Oct 22 23:27:07 2012] [error] [client 192.168.1.40] PHP Warning:  DOMDocument::load(): &lt;br /&gt;
Premature end of data in tag html line 3 in /var/www/drupal-6.26/snpservices/data/guifi.cnml, line: 149 in /var/www/drupal-6.26/snpservices/graphs/cnml2mrtgcsv.php on line 270&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tambien este. Parece que al intentar cargar la zona, da un error Apache a causa de falta de memoria al cargar todos los datos en una variable&lt;br /&gt;
Para solucioanrlo se tiene que modificar el limite d ememoria para php dentro de /etc/php5/apache/php.ini&lt;br /&gt;
La variable se llama &lt;br /&gt;
memory_limit = 128M&lt;br /&gt;
Parece que si lo pones a -1 equivale a que no tenga limite.&lt;br /&gt;
http://es1.php.net/manual/es/ini.core.php#ini.memory-limit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
==&amp;gt; /var/log/apache2/error.log &amp;lt;==&lt;br /&gt;
[Tue Oct 23 20:54:16 2012] [error] [client 192.168.1.44] PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 20 bytes) in /var/www/drupal-6.26/includes/database.mysqli.inc on line 150&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De todas maneras, los recursos son limitados. Este mensaje en Apache identifica lo msimo. Falta de recursos. En mi caso, como no tengo mas, hago una consulta mas pequeña para poder probar.el error que me salia es este&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Sat May 22 00:39:01 2010] [notice] child pid 14787 exit signal Segmentation fault (11)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
He aprendido la causas aquí http://www.webhostingtalk.com/showthread.php?t=950165&lt;br /&gt;
&lt;br /&gt;
=== Migración de un servidor a otro ===&lt;br /&gt;
Si quieres migrar un servidor de gráficas a otro servidor manteniendo las gráficas es tan simple como configurar el snpservices con el mismo ID que el antiguo y copiar los ficheros .rrd de /var/lib/snpservices/rrdb de la máquian vieja a la nueva.&lt;br /&gt;
&lt;br /&gt;
Si la máquina nueva funciona con una arquitectura (por ejemplo, antes 32bits y ahora 64bits), los ficheros .rrd deben ser reconvertidos. Para ello hay que convertir el .rrd a XML y volver a crear el fichero .rrd a partir del XML.&lt;br /&gt;
&lt;br /&gt;
En la máquina de 32bits ejecutamos esto:&lt;br /&gt;
:rrdtool dump fitxer_32bits_.rrd &amp;gt; fitxer.xml&lt;br /&gt;
&lt;br /&gt;
Copiamos el ficheor a la nueva máquina de 64bits y ejecutamos:&lt;br /&gt;
:rrdtool restore fitxer.xml&lt;br /&gt;
&lt;br /&gt;
Y queda generado el fichero .rrd&lt;br /&gt;
&lt;br /&gt;
[[Categoría:SNPServices]]&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/SNPServices</id>
		<title>SNPServices</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/SNPServices"/>
				<updated>2012-11-07T09:36:08Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: /* Instalacion del servicio SNPServices */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Servicio SNPServices ===&lt;br /&gt;
SNPServices es un servicio de gráficas...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El sistema de monitorización de la red se realiza mediante 3 sistemas principales. &lt;br /&gt;
Vea este documento para ver el esquema general http://es.wiki.guifi.net/wiki/Monitor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuración de servidor Cliente SNPServices'''&lt;br /&gt;
El cliente SNPServices recoge información de su red mas cercana. La almacena y se la entrega al servidor web en modo de gráficas que incrusta en el entorno de guifi.net.&lt;br /&gt;
Esta configuración es la que realizaras si quieres servir gráficos a la zona donde estas. Es muy probable que lo montes en el servidor proxy que tengáis, pero podría ser dedicado.&lt;br /&gt;
El procedimiento lo encontrarás aquí http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Servidor WEB'''&lt;br /&gt;
El servidor web de guifi, única ente que accede a las bases de datos del sistema.&lt;br /&gt;
Para montar un servicio WEB idéntico a www.guifi.net, o sea, un entorno de desarrollo se realiza mediante este procedimiento&lt;br /&gt;
http://es.wiki.guifi.net/wiki/Preparando_el_entorno_de_desarrollo&lt;br /&gt;
&lt;br /&gt;
'''Configuración de servidor MASTER SNPServices'''&lt;br /&gt;
Este servicio solo es alcanzable desde el cliente SNPServices. Solo existe un servicio como este y esta en la central de GUIFI.NET.&lt;br /&gt;
Desde aquí se crea el archivo CNML que se lo cede a los clientes SNPServices. Esta información se necesita para que los servicios SNPServices locales hagan sus comprobaciones de los sistemas cercanos.&lt;br /&gt;
Básicamente SNPServices sirve recopilar información general de la red que esta en la BBDD de GUIFI. Cuando un cliente SNPServices le pide información de su red, el servidor se la concede en formato CNML.&lt;br /&gt;
&lt;br /&gt;
=== Instalacion del servicio SNPServices mediante GIT===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Nota: Este metodo de instalacion depende de que el repositorio este actualizado y a fecha de 07/11/2012  no loe sta. Me ha sido mas facil la isntalacion mediante apt-get install.&lt;br /&gt;
* [[Servidor de gráficas 1]]  (Debian/Ubuntu) método apt + configuración virtualhost apache&lt;br /&gt;
* [[Servidor de gráficas 2]] (Debian/Ubuntu) método dpkg&lt;br /&gt;
* [[Servidor de gráficas 3]] (Debian/Ubuntu) extendido&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El servicio SNPServices Master y Cliente se instala del mismo modo.&lt;br /&gt;
A diferencia entre ambos es que usan procedimientos diferentes en al ejecución de sus tareas. También alguno común.&lt;br /&gt;
&lt;br /&gt;
Para instalarlo se hace así&lt;br /&gt;
Nos creamos una cuenta en el repositorio gitorius. Clonamos el servicio snpservices para poder enviar nuestras mejoras. Lo descargamos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /var/www/html&lt;br /&gt;
git clone git://gitorious.org/guifi/snpservices.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
También se puede descargar mediante repositorio.&lt;br /&gt;
http://es.wiki.guifi.net/wiki/Configurar_Repositorio_apt_guifi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Configurar_Repositorio_apt_guifi|Configurar el Repositorio de apt de Guifi]]&lt;br /&gt;
&lt;br /&gt;
Una vez configurado el repositorio, descargamos servicio.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# apt-get install snpservices&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si quieres instalar el servicio SNPServices para servir gráficas sigue los pasos aqui&lt;br /&gt;
http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas&lt;br /&gt;
&lt;br /&gt;
A partir de ahora configuraremos el servicio SNPServices Master para servir datos a los clientes SNPServicves&lt;br /&gt;
&lt;br /&gt;
=== Configuración del servicio SNPServices Master ===&lt;br /&gt;
&lt;br /&gt;
.Se crea un alias que apunte a nuestra carpeta donde hemos instalado el servicio&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; Alias /snpservices /var/www/html/snpservices &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
. Creas la rarpeta /tmp y le das permisos de escritura&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;mkdir /tmp&lt;br /&gt;
chmod a+rw snpservices/tmp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
.Crea els ervicio en al base  de datos usando esta direccion&lt;br /&gt;
&amp;lt;pre&amp;gt; http://yourserver/snpservices&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
te saldra una pagina asi&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ERROR: No service specified&lt;br /&gt;
CNML services&lt;br /&gt;
Version: 2.0&lt;br /&gt;
USAGE:&lt;br /&gt;
index.php?call=[service][&amp;amp;parameter[=value]]&lt;br /&gt;
&lt;br /&gt;
services: help version phpinfo serverinfo [service]&lt;br /&gt;
  help&lt;br /&gt;
...sigue...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
si fueras un cliente, el procedimiento continua cambiando el servidor root al que te conectas modificando el archivo /common/config.php.&lt;br /&gt;
Es por esto que nos sale el error &amp;quot;ERROR: No service specified&amp;quot;, pero en este caso nosotros somos el root y aqui tenemos que poner un que representa al servidor web. Para guifi tenemos un valor reservado. Si quieres contactar con el servidor root, debes de pedirlo en los foros abiertos en las listas de desarrollo. Para cualquier entorno podria valer con poner otro servidor de gráficas.&lt;br /&gt;
&lt;br /&gt;
Tenemos un archivo llamado common/config.php.template que nos servirá de plantilla&lt;br /&gt;
&lt;br /&gt;
=== Configuración del archivo config.php ===&lt;br /&gt;
Vamos al grano.&lt;br /&gt;
&lt;br /&gt;
Aquí se configura el directorio raiz del servicio SNP. Esta variable es usada en varios sitios.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// snp_pat: full directory where snp services are located&lt;br /&gt;
$snp_path='/var/www/html/snpservices';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Este es el numero de nodo que nos ha dado el servidor web al crear el servicio SNP Cliente.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// SNPGraphServerID: Default Graph Server ID&lt;br /&gt;
$SNPGraphServerId = 6579;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Servicio root. El root de nuestro servidor guifi actual es la pagina web www.guifi.net&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// rootZone: which is the ROOT zone&lt;br /&gt;
$rootZone = ****; (valor reservado por seguridad)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aqui la direccion desde donde se enlaza a los servicios mediante web. Esta variable es usada en varios archivos de configuracion&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// SNPDataServer_url: without ending backslash, the url where the data is&lt;br /&gt;
$SNPDataServer_url = 'http://guifi.net';&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuracion del servicio MRTG creador de gráficas. Aqui le diremos donde almacenar los datos.&lt;br /&gt;
Tienes que crear el directorio mrtg en /snpservices/mrtg&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// MRTGConfigSource: mrtg csv data&lt;br /&gt;
// As a input, could be either a local (to be created from&lt;br /&gt;
// cached CNML file, or remote&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
El programa cnml2mrtfcsv es el servicio SNPService principal y busca en la BBDD del servidor web los cambios que han habido. Si ha cambiado algo desde la ultima actualización, genera de nuevo el archivo CNML.&lt;br /&gt;
Se tiene que modificar a la ruta que tengamos nosotros, normalmente dentro de ./graphs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$MRTGConfigSource='http://proves.elserrat.guifi.net/snpservices/graphs/cnml2mrtgcsv.php';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Aqui almacenamos los datos mrtg que recojamos. La carpeta data no esta creada por defecto. La tenemos que crear mediante mkdir data desde el directorio snpservice&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//$MRTGConfigSource='../data/guifi_mrtg.csv';&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Configuracino para la creacion de archivo CNML&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// CNMLSource: url for CNML node query, use sprintf syntax&lt;br /&gt;
// MySQL-drupal source&lt;br /&gt;
//$CNMLSource='http://proves.elserrat.guifi.net/guifi/cnml/%s/node';&lt;br /&gt;
// Cached CNML source (prefered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Aqui almacenamos los datos CNML que recojamos&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$CNMLSource='http://proves.elserrat.guifi.net/snpservices/common/qnodes.php?nodes=%s';&lt;br /&gt;
$CNMLData='../data/guifi.cnml';&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Configuracion de herramienta rrdtool. transforma tdatos en archivi .rrd para poder ser exportado. No hace falta hacer nada aqui&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// rrdtool parameters&lt;br /&gt;
$rrdtool_path='/usr/bin/rrdtool';&lt;br /&gt;
$rrddb_path='/home1/comesfa/mrtg/logs/';&lt;br /&gt;
$rrdimg_path='/home1/comesfa/mrtg/images/';&lt;br /&gt;
&lt;br /&gt;
// which version does have this server? &lt;br /&gt;
// currently supported versions are:&lt;br /&gt;
// 1.2&lt;br /&gt;
// 1.3&lt;br /&gt;
$rrdtool_version = &amp;quot;1.3&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Configuracion de entorno MRTG. No hace falta hacer nada aqui&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// mrtg local header&lt;br /&gt;
$rrdtool_header='# PathAdd: /usr/local/rrdtool-1.2.12/bin&lt;br /&gt;
# LibAdd: /usr/local/rrdtool-1.2.12/lib/perl/5.8.8/i386-linux-thread-multi&lt;br /&gt;
HtmlDir: %s&lt;br /&gt;
ImageDir: %s &lt;br /&gt;
LogDir: %s&lt;br /&gt;
LogFormat: rrdtool&lt;br /&gt;
ThreshDir: %s&lt;br /&gt;
Forks: 12&lt;br /&gt;
';&lt;br /&gt;
&lt;br /&gt;
// mrtg ping template&lt;br /&gt;
$mrtg_ping_template ='Title[%s_ping]: Temps del ping de %s &lt;br /&gt;
PageTop[%s_ping]: &amp;lt;H1&amp;gt;Lat&amp;amp;egrave;ncia %s&amp;lt;/H1&amp;gt;&lt;br /&gt;
     &amp;lt;TABLE&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;System:&amp;lt;/TD&amp;gt;     &amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Maintainer:&amp;lt;/TD&amp;gt; &amp;lt;TD&amp;gt;guifi@guifi.net&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Description:&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;ping&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;IP:&amp;lt;/TD&amp;gt;         &amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;/TABLE&amp;gt;&lt;br /&gt;
Target[%s_ping]: `/etc/mrtg/ping.sh %s`&lt;br /&gt;
MaxBytes[%s_ping]: 2000&lt;br /&gt;
Options[%s_ping]: growright,unknaszero,nopercent,gauge&lt;br /&gt;
LegendI[%s_ping]: Perduts %&lt;br /&gt;
LegendO[%s_ping]: Temps mig&lt;br /&gt;
Legend1[%s_ping]: Temps max. en ms&lt;br /&gt;
Legend2[%s_ping]: Temps min. en ms&lt;br /&gt;
YLegend[%s_ping]: RTT (ms)&lt;br /&gt;
';&lt;br /&gt;
&lt;br /&gt;
$mrtg_traffic_template='Target[%s_traf]: %s:public@%s:&lt;br /&gt;
SetEnv[%s_traf]: MRTG_INT_IP=&amp;quot;%s&amp;quot; MRTG_INT_DESCR=&amp;quot;%s&amp;quot;&lt;br /&gt;
MaxBytes[%s_traf]: 104857600&lt;br /&gt;
Title[%s_traf]: Tr&amp;amp;agrave;nsit a %s de %s&lt;br /&gt;
PageTop[%s_traf]: &amp;lt;H1&amp;gt;Tr&amp;amp;agrave;nsit a %s de %s&amp;lt;/H1&amp;gt;&lt;br /&gt;
     &amp;lt;TABLE&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;System:&amp;lt;/TD&amp;gt;     &amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Maintainer:&amp;lt;/TD&amp;gt; &amp;lt;TD&amp;gt;guifi@guifi.net&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Description:&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Max Speed:&amp;lt;/TD&amp;gt;  &amp;lt;TD&amp;gt;100.0 Mbytes/s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;/TABLE&amp;gt;&lt;br /&gt;
';&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arrancamos y actualizamos datos ===&lt;br /&gt;
Para arrancar y actualizar datos se hace mediante un comando llamado refresh.sh&lt;br /&gt;
Mas adelante configuraremos para que refresque solo. Primero lo ejecutaremos manualmente&lt;br /&gt;
&lt;br /&gt;
Lo he arrancado y me da el siguiente error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# ./refresh.sh &lt;br /&gt;
Getting CNML file&lt;br /&gt;
Error redaing CNML source\nroot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Esto es porque no hay configurado algu parametro. Entramos en refresh.sh y este nos envia a refresh.cnml.php&lt;br /&gt;
refress.sh llama a dos archivos php.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# cat refresh.sh &lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# Refreshing CNML local file (optional)&lt;br /&gt;
php refresh_cnml.php&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configurar refresh.cnml.php ===&lt;br /&gt;
Veamos ahora el archivo de configuracion refresh.cnml.php&lt;br /&gt;
&lt;br /&gt;
Si queremos ejecutar este archivo lo hacemos mediante la llamada a php&lt;br /&gt;
Aqui vemos que error genera y podremos ir a ver donde esta ocurriendo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Este es el archivo. Primero carga una configuración común en el archivo config.php. Sino busca la plantilla config.php.template&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
  if (file_exists(&amp;quot;config.php&amp;quot;)) {&lt;br /&gt;
    include_once(&amp;quot;./config.php&amp;quot;);&lt;br /&gt;
  } else {&lt;br /&gt;
    include_once(&amp;quot;config.php.template&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  $minX = 999;&lt;br /&gt;
  $minY = 999;&lt;br /&gt;
  $maxX = -999;&lt;br /&gt;
  $maxY = -999;&lt;br /&gt;
&lt;br /&gt;
  $members = array();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Intenta abrir archivo ya creado. Tenemos que modificar la ruta donde almacena esta informacion. Compara la fecha de actualización anterior y la actual para decidir si hacer un refresco completo o no.&lt;br /&gt;
si todo esta actualizado, ejecuta exit() y acaba.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  $hlastnow = @fopen($SNPDataServer_url.&amp;quot;/guifi/refresh/cnml&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    or die('Error reading last timestamp\n');&lt;br /&gt;
  $last_now = fgets($hlastnow);&lt;br /&gt;
  fclose($hlastnow);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_update.cnml&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
  if (($hlast) and ($last_now == fgets($hlast))) {&lt;br /&gt;
    fclose($hlast);&lt;br /&gt;
    echo &amp;quot;No changes.\n&amp;quot;;&lt;br /&gt;
    exit();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si está mal configurado estos parámetros, tendremos el siguiente error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# php refresh_cnml.php &lt;br /&gt;
Getting CNML file&lt;br /&gt;
Error reading last timestamp&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aqui es cuando empieza la búsqueda de cambios.&lt;br /&gt;
El primer open abre un archivo de la web con los contenidos. estos son comparados con el archivo que tenemos en /tmp. Si son diferentes, realiza una descarga y lo actualiza.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Getting CNML file\n&amp;quot;;&lt;br /&gt;
  $hcnml = @fopen($SNPDataServer_url.&amp;quot;/guifi/cnml/&amp;quot;.$rootZone.&amp;quot;/detail&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    or die ('Error redaing CNML source\n');&lt;br /&gt;
  $wcnml = @fopen(&amp;quot;../data/guifi.cnml.tmp&amp;quot;, &amp;quot;w&amp;quot;);&lt;br /&gt;
  while (!feof($hcnml)) {&lt;br /&gt;
    $buffer = fgets($hcnml, 4096);&lt;br /&gt;
    fwrite($wcnml,$buffer);&lt;br /&gt;
  }&lt;br /&gt;
  fclose($hcnml);&lt;br /&gt;
  fclose($wcnml);&lt;br /&gt;
  exec (&amp;quot;/bin/cp ../data/guifi.cnml.tmp ../data/guifi.cnml&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_update.cnml&amp;quot;, &amp;quot;w&amp;quot;) or die('Error!');&lt;br /&gt;
  fwrite($hlast,$last_now);&lt;br /&gt;
  fclose($hlast);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
                  &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si esta mal configurado, recibiremos este error. Tambien puede identificar falta de recursos para Apache.Mira el log de Apache.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# php refresh_cnml.php &lt;br /&gt;
Getting CNML file&lt;br /&gt;
Error redaing CNML source\n&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices[Sat May 22 00:39:01 2010] [notice] child pid 14787 exit signal Segmentation fault (11)/common#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
El sistema dentro de la web que crea el archivo CNML es un proceso de un modulo de Drupal del sistema guifi&lt;br /&gt;
Lo encontraras aqui&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/sites/all/modules/guifi/guifi_cnml.inc.php&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora tenemos dentro de /data dos archivos iguales llamados guifi.cnml i guifi.cnml.tmp con os contenidos encontrados.&lt;br /&gt;
También actualiza datos en /tmp/last_update.cnml que se usara nuevamente en la próxima actualizacion&lt;br /&gt;
&lt;br /&gt;
=== Prueba de servicio ===&lt;br /&gt;
&lt;br /&gt;
Un cliente con servici SNPService usara el servicio SNPService Master recien creado para preguntar informacion acerca un nodo de esta manera&lt;br /&gt;
http://www.guifi.net/snpservices/graphs/cnml2mrtgcsv.php?server=6558&lt;br /&gt;
&lt;br /&gt;
Esto nos devuelve un archivo CNML como este&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
46491,#VicPuigsacalm2Rd1,10.138.48.51,wlan1;VicVcPgsclm2Rd1CPE0,Planned&lt;br /&gt;
38297,#VicCnvntCrmltsRd1,10.138.160.39,ath0;Vic-1-NOVcCnvntCrmltsRd1CPE0,Working&lt;br /&gt;
45489,#Vic11Set38Rd1,10.138.168.170,wlan1;Vic-1-NOVc11St38Rd1CPE0,Planned&lt;br /&gt;
44406,#Vic11set40Rd2,10.138.101.4,ath0;Vic-1-NO11st40Rd2CPE0,Working&lt;br /&gt;
33929,#Vic11setembre25Rd1,10.138.22.87,wifi0;Vic-1-NOVc11stmbr25Rd1CPE0,Working&lt;br /&gt;
18809,#VicAGrifollRd2,10.138.14.104,6,Working&lt;br /&gt;
40356,#VicAlbergCanongeRd2,10.138.10.80,Lan/Lan;Vic-1-NOVclbrgCnngRd2CPE0,Working&lt;br /&gt;
22068,#VicAlemanyRd1,10.138.14.135,wifi0;Vic-1 NOVclmnyRd1CPE0,Working&lt;br /&gt;
30303,#VicAlemanyRd2,10.138.14.201,wifi0;Vic-1 NOVclmnyRd2CPE0,Planned&lt;br /&gt;
36620,#VicAlinaRd2,10.138.10.72,wlan1;Vic-1-NOVclnRd2CPE0,Working&lt;br /&gt;
7211,#VicAngladaRd1,10.138.10.73,Lan/Lan;VicAngladaRadio1-0,Working&lt;br /&gt;
19857,#VicAnnaBRd2,10.138.11.62,wifi0;VicVcnnBRd2CPE0,Working&lt;br /&gt;
14203,#VicAnnaMaxenchsRd1,10.138.22.41,wifi0;VicVcnnMxnchsRd1CPE0,Working&lt;br /&gt;
13655,#VicAnnaPratRd1,10.138.11.51,;VicVcnnPrtRd2CPE0,Working&lt;br /&gt;
17035,#VicAnnaSolerRd3,10.138.22.196,6,Working&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La configuracion puede que no funcione. Para ver errores, pedir a apache que nos mustre su log&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:~# tail -f /var/log/apache2/*.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Yo me he encotnrado este error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Mon Oct 22 23:27:07 2012] [error] [client 192.168.1.40] PHP Warning:  DOMDocument::load(): &lt;br /&gt;
Premature end of data in tag html line 3 in /var/www/drupal-6.26/snpservices/data/guifi.cnml, line: 149 in /var/www/drupal-6.26/snpservices/graphs/cnml2mrtgcsv.php on line 270&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tambien este. Parece que al intentar cargar la zona, da un error Apache a causa de falta de memoria al cargar todos los datos en una variable&lt;br /&gt;
Para solucioanrlo se tiene que modificar el limite d ememoria para php dentro de /etc/php5/apache/php.ini&lt;br /&gt;
La variable se llama &lt;br /&gt;
memory_limit = 128M&lt;br /&gt;
Parece que si lo pones a -1 equivale a que no tenga limite.&lt;br /&gt;
http://es1.php.net/manual/es/ini.core.php#ini.memory-limit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
==&amp;gt; /var/log/apache2/error.log &amp;lt;==&lt;br /&gt;
[Tue Oct 23 20:54:16 2012] [error] [client 192.168.1.44] PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 20 bytes) in /var/www/drupal-6.26/includes/database.mysqli.inc on line 150&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De todas maneras, los recursos son limitados. Este mensaje en Apache identifica lo msimo. Falta de recursos. En mi caso, como no tengo mas, hago una consulta mas pequeña para poder probar.el error que me salia es este&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Sat May 22 00:39:01 2010] [notice] child pid 14787 exit signal Segmentation fault (11)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
He aprendido la causas aquí http://www.webhostingtalk.com/showthread.php?t=950165&lt;br /&gt;
&lt;br /&gt;
=== Migración de un servidor a otro ===&lt;br /&gt;
Si quieres migrar un servidor de gráficas a otro servidor manteniendo las gráficas es tan simple como configurar el snpservices con el mismo ID que el antiguo y copiar los ficheros .rrd de /var/lib/snpservices/rrdb de la máquian vieja a la nueva.&lt;br /&gt;
&lt;br /&gt;
Si la máquina nueva funciona con una arquitectura (por ejemplo, antes 32bits y ahora 64bits), los ficheros .rrd deben ser reconvertidos. Para ello hay que convertir el .rrd a XML y volver a crear el fichero .rrd a partir del XML.&lt;br /&gt;
&lt;br /&gt;
En la máquina de 32bits ejecutamos esto:&lt;br /&gt;
:rrdtool dump fitxer_32bits_.rrd &amp;gt; fitxer.xml&lt;br /&gt;
&lt;br /&gt;
Copiamos el ficheor a la nueva máquina de 64bits y ejecutamos:&lt;br /&gt;
:rrdtool restore fitxer.xml&lt;br /&gt;
&lt;br /&gt;
Y queda generado el fichero .rrd&lt;br /&gt;
&lt;br /&gt;
[[Categoría:SNPServices]]&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas</id>
		<title>Servidor de gráficas</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas"/>
				<updated>2012-11-07T09:33:36Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: /* Manuales */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= Definicion = &lt;br /&gt;
El servidor de gráficas se baas en el servicio de GUIFI llamado SNPServices.&lt;br /&gt;
El servidor SNPServices, y para ser mas exactos cliente SNPServices es un servidor linux, con php, apache, mrtg y rrdtool, no&lt;br /&gt;
necesita nada mas.&lt;br /&gt;
Le llamamos cliente porque el servidor Master SNPServices es un servidor que nos enviará informacion a nuestro servidor cliente SNPServices.&lt;br /&gt;
Aqui tienes un esquema que te hará ver claro esta definicion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Definicion para expertos&lt;br /&gt;
El cliente SNPServices consulta al Master snpservices la lista de nodos a monitorear, recogida previamente del servidor web mediante CNML, se parsea la lista y formatea scripts mrtg y los&lt;br /&gt;
ejecuta (pings y trafico) para generar un rrd y con consultas http desde el servidor web, se ejecuta un php que convierte los .rrd en imagenes y las muestra.&lt;br /&gt;
&lt;br /&gt;
El servidor WEB de guifi.net conoce la url del servidor de graficas de la zona de un nodo, o sea, los SNPServices clientes de cada zona. La web muestra sus datos locales y los datos remotos.&lt;br /&gt;
&lt;br /&gt;
Definicion extendida&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 1'''.-Un nodo crea un servicio de servidor de gráficas en la web. Este servicio le concede un numero que le identifica. A este valor le llamamos '''$SNPGraphServerId''' &lt;br /&gt;
Aquest servidor de gràfics, s'instalara un servei Apache, php i els ervei SNPServices. La direccio web l'anomenarem com '''$SNPDataServer_url'''&lt;br /&gt;
&lt;br /&gt;
Este servicio puede ser ademas supernodo de una zona y por tanto tiene el código de la zona. A este valor el llamamos '''$rootZone'''&lt;br /&gt;
&lt;br /&gt;
'''Pas 2''',. Al crearse este nodo, se actualiza la BBDD de la web- Esta base de datos contiene toda la información de los nodos,servicios y demas de GUIFI.NET&lt;br /&gt;
&lt;br /&gt;
'''Pas 3 i 4''' Abans de continuar amb el treball que fa el servidor SNPServices client, el Master SNPServices ha de fer un treball.&lt;br /&gt;
El Master SNPServices consulta al servidor Web una lista de todos los nodos de una zona. Aquesta pregunta la fa amb el script php que es diu '''refresh_cnml.php.''' . El servidor web li torna una llista de nodes en format CNML que enmagatzema en un arxiu que es diu /var/lib/snpservices/data/guifi.cnml&lt;br /&gt;
&lt;br /&gt;
Mostro l'inici de l'arxiu guifi.cnml&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;cnml version=&amp;quot;0.1&amp;quot; server_id=&amp;quot;1&amp;quot; server_url=&amp;quot;http://guifi.net&amp;quot; generated=&amp;quot;20121105 1247&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Exactament l'arxiu que obre es aixi $SNPDataServer_url.&amp;quot;/guifi/cnml/&amp;quot;.$rootZone.&amp;quot;/detail&amp;quot;&lt;br /&gt;
&lt;br /&gt;
El servidor web torna un arxiu i el servidor SNPServices el guarda a /var/lib/snpservices/data/guifi.cnml&lt;br /&gt;
Aquest arxiu s'actualitza de tant en tant i es necessari fer-ho ja que els canvis a la web no es reflexarien en els serveis a monitoritzar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 5 i 6'''.-Tornem al nostre servidor client SNPServices que estem muntant.&lt;br /&gt;
&lt;br /&gt;
El servidor SNPServices te una direccio an on buscar l'arxiu cnml crear per el Master SNPServices&lt;br /&gt;
$MRTGConfigSource='$SNPDataServer_url.&amp;quot;/graphs/cnml2mrtgcsv.php?server&amp;quot;.='.$SNPGraphServerId;&lt;br /&gt;
&lt;br /&gt;
En aquesta direccio es descarrega la llista de nodes a monitoritzar i transforma el contingut en una arxiu que conte els nodes a monitotritzar i en un llenguatge que el pugui entendre el servei mrtg.&lt;br /&gt;
&lt;br /&gt;
Mostro l'inici de l'arxiu mrtg.cfg&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# PathAdd: /usr/local/rrdtool-1.2.12/bin&lt;br /&gt;
# LibAdd: /usr/local/rrdtool-1.2.12/lib/perl/5.8.8/i386-linux-thread-multi&lt;br /&gt;
HtmlDir: /var/lib/snpservices/rrimg/&lt;br /&gt;
ImageDir: /var/lib/snpservices/rrimg/ &lt;br /&gt;
LogDir: /var/lib/snpservices/rrdb/&lt;br /&gt;
LogFormat: rrdtool&lt;br /&gt;
ThreshDir: /var/lib/snpservices/rrdb/&lt;br /&gt;
Forks: 12&lt;br /&gt;
Title[11833_ping]: Temps del ping de Futbol-Remei-VicRd1 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per veure aquesta llista en format csv desde web la podem demanar aixi&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$SNPDataServer_url/snpservices/graphs/cnml2mrtgcsv.php?server=$SNPGraphServerId&lt;br /&gt;
&lt;br /&gt;
Jo ho faig amb aquests valors&lt;br /&gt;
http://192.168.1.44/snpservices/graphs/cnml2mrtgcsv.php?server=6833&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De pas, veurem si fins aqui funciona tot.&lt;br /&gt;
&lt;br /&gt;
El los del sistema a on ens diu els moviments d'aques proces esta a '''/var/log/snpservices/mrtgccfg.log'''&lt;br /&gt;
&lt;br /&gt;
Al instalar el serveis SNPServices , s'ens ha afegit un cron a &lt;br /&gt;
&lt;br /&gt;
Aquest cron (script que s'autoexecuta segons programació) esta aqui '''/etc/cron.d/snpservices'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
*/30 *  * * *   root    if [ -x /usr/bin/php ]; then env LANG=C /usr/bin/php /usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php &amp;gt;&amp;gt; /var/log/snpservices/mrtgccfg.log 2&amp;gt;&amp;amp;1; fi&lt;br /&gt;
*/5 *   * * *   root    if [ ! -x /var/lock/mrtg ]; then mkdir /var/lock/mrtg ; fi; if [ -x /usr/bin/mrtg ] &amp;amp;&amp;amp; [ -r /var/lib/snpservices/data/mrtg.cfg ]; then env LANG=C /usr/bin/mrtg /var/lib/snpservices/data/mrtg.cfg --lock-file /var/lock/mrtg/guifi_l &amp;gt;&amp;gt; /var/log/snpservices/mrtg.log 2&amp;gt;&amp;amp;1; fi&lt;br /&gt;
/usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquest ve a dir que mitjançant el script /usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php, consulti l'arxiu guifi.cnml abans descrit i transformi el contingut en un xml disponible per al servei mrtg. Ho enmagatzema en /var/lib/snpservices/data/mrtg.cfg&lt;br /&gt;
&lt;br /&gt;
Una vegada el nostre servidor SNPServices client te les dades dels nodes a monitoritzar, es qua s'executa el proces de recerca de dades al mon amb el sistema mrtg. Ho fa amb /usr/bin/mrtg /var/lib/snpservices/data/mrtg.cfg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 7''' El servei mrtg consulta les dades amb ping i els envia a rrdtood que fabrica el gràfic.&lt;br /&gt;
el log dels movimetns del servei mrtg estan a '''/var/log/snpservices/mrtgc.log'''&lt;br /&gt;
Les dades per fer el gràfic s'enmagatzemen en '''/var/lib/snpservices/rrdb'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 8''' Els clients que volen informació dels nodes, la busquen al servidor web, el servidor web busca les dades i les troba dins del seu MySQL, pero els gràfics els va a buscar al servidor de gràfics d'aquell node, o sigui, al server $SNPGraphServerId.&lt;br /&gt;
&lt;br /&gt;
= Manuales =&lt;br /&gt;
* [[SNPservices]] Instalacion SNPServices mediante GIT. Aqui hay explicacion interesante, pero GIT no esta actualizado. Mejor usar instalacion de snpservices como servicio de Debian con metodo at-get&lt;br /&gt;
* [[Servidor de gráficas 1]]  (Debian/Ubuntu) método apt + configuración virtualhost apache&lt;br /&gt;
* [[Servidor de gráficas 2]] (Debian/Ubuntu) método dpkg&lt;br /&gt;
* [[Servidor de gráficas 3]] (Debian/Ubuntu) extendido&lt;br /&gt;
&lt;br /&gt;
* [Tutorial servicio SNPServices http:www3.uji.es/~vrubert/guifi_linux/graph.html]&lt;br /&gt;
&lt;br /&gt;
= PMF =&lt;br /&gt;
* [[Regenerar los ficheros rrd]]&lt;br /&gt;
* tener en cuenta que al connectar un dispositivo por cable ponerlo en Lan o en la ubicacion que sea, sino puede que no grafique correctamente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Referencias =&lt;br /&gt;
*[http://www.guifi.net/proxy-debian manual debian de guifi.net]&lt;br /&gt;
*[http://asociacionjuvenilelcueto.info/node/156 manual de la associació Juvenil el Cueto (Rioja)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ca:Servidor_de_gràfiques]]&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas</id>
		<title>Servidor de gráficas</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas"/>
				<updated>2012-11-07T09:33:12Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= Definicion = &lt;br /&gt;
El servidor de gráficas se baas en el servicio de GUIFI llamado SNPServices.&lt;br /&gt;
El servidor SNPServices, y para ser mas exactos cliente SNPServices es un servidor linux, con php, apache, mrtg y rrdtool, no&lt;br /&gt;
necesita nada mas.&lt;br /&gt;
Le llamamos cliente porque el servidor Master SNPServices es un servidor que nos enviará informacion a nuestro servidor cliente SNPServices.&lt;br /&gt;
Aqui tienes un esquema que te hará ver claro esta definicion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Definicion para expertos&lt;br /&gt;
El cliente SNPServices consulta al Master snpservices la lista de nodos a monitorear, recogida previamente del servidor web mediante CNML, se parsea la lista y formatea scripts mrtg y los&lt;br /&gt;
ejecuta (pings y trafico) para generar un rrd y con consultas http desde el servidor web, se ejecuta un php que convierte los .rrd en imagenes y las muestra.&lt;br /&gt;
&lt;br /&gt;
El servidor WEB de guifi.net conoce la url del servidor de graficas de la zona de un nodo, o sea, los SNPServices clientes de cada zona. La web muestra sus datos locales y los datos remotos.&lt;br /&gt;
&lt;br /&gt;
Definicion extendida&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 1'''.-Un nodo crea un servicio de servidor de gráficas en la web. Este servicio le concede un numero que le identifica. A este valor le llamamos '''$SNPGraphServerId''' &lt;br /&gt;
Aquest servidor de gràfics, s'instalara un servei Apache, php i els ervei SNPServices. La direccio web l'anomenarem com '''$SNPDataServer_url'''&lt;br /&gt;
&lt;br /&gt;
Este servicio puede ser ademas supernodo de una zona y por tanto tiene el código de la zona. A este valor el llamamos '''$rootZone'''&lt;br /&gt;
&lt;br /&gt;
'''Pas 2''',. Al crearse este nodo, se actualiza la BBDD de la web- Esta base de datos contiene toda la información de los nodos,servicios y demas de GUIFI.NET&lt;br /&gt;
&lt;br /&gt;
'''Pas 3 i 4''' Abans de continuar amb el treball que fa el servidor SNPServices client, el Master SNPServices ha de fer un treball.&lt;br /&gt;
El Master SNPServices consulta al servidor Web una lista de todos los nodos de una zona. Aquesta pregunta la fa amb el script php que es diu '''refresh_cnml.php.''' . El servidor web li torna una llista de nodes en format CNML que enmagatzema en un arxiu que es diu /var/lib/snpservices/data/guifi.cnml&lt;br /&gt;
&lt;br /&gt;
Mostro l'inici de l'arxiu guifi.cnml&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;cnml version=&amp;quot;0.1&amp;quot; server_id=&amp;quot;1&amp;quot; server_url=&amp;quot;http://guifi.net&amp;quot; generated=&amp;quot;20121105 1247&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Exactament l'arxiu que obre es aixi $SNPDataServer_url.&amp;quot;/guifi/cnml/&amp;quot;.$rootZone.&amp;quot;/detail&amp;quot;&lt;br /&gt;
&lt;br /&gt;
El servidor web torna un arxiu i el servidor SNPServices el guarda a /var/lib/snpservices/data/guifi.cnml&lt;br /&gt;
Aquest arxiu s'actualitza de tant en tant i es necessari fer-ho ja que els canvis a la web no es reflexarien en els serveis a monitoritzar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 5 i 6'''.-Tornem al nostre servidor client SNPServices que estem muntant.&lt;br /&gt;
&lt;br /&gt;
El servidor SNPServices te una direccio an on buscar l'arxiu cnml crear per el Master SNPServices&lt;br /&gt;
$MRTGConfigSource='$SNPDataServer_url.&amp;quot;/graphs/cnml2mrtgcsv.php?server&amp;quot;.='.$SNPGraphServerId;&lt;br /&gt;
&lt;br /&gt;
En aquesta direccio es descarrega la llista de nodes a monitoritzar i transforma el contingut en una arxiu que conte els nodes a monitotritzar i en un llenguatge que el pugui entendre el servei mrtg.&lt;br /&gt;
&lt;br /&gt;
Mostro l'inici de l'arxiu mrtg.cfg&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# PathAdd: /usr/local/rrdtool-1.2.12/bin&lt;br /&gt;
# LibAdd: /usr/local/rrdtool-1.2.12/lib/perl/5.8.8/i386-linux-thread-multi&lt;br /&gt;
HtmlDir: /var/lib/snpservices/rrimg/&lt;br /&gt;
ImageDir: /var/lib/snpservices/rrimg/ &lt;br /&gt;
LogDir: /var/lib/snpservices/rrdb/&lt;br /&gt;
LogFormat: rrdtool&lt;br /&gt;
ThreshDir: /var/lib/snpservices/rrdb/&lt;br /&gt;
Forks: 12&lt;br /&gt;
Title[11833_ping]: Temps del ping de Futbol-Remei-VicRd1 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per veure aquesta llista en format csv desde web la podem demanar aixi&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$SNPDataServer_url/snpservices/graphs/cnml2mrtgcsv.php?server=$SNPGraphServerId&lt;br /&gt;
&lt;br /&gt;
Jo ho faig amb aquests valors&lt;br /&gt;
http://192.168.1.44/snpservices/graphs/cnml2mrtgcsv.php?server=6833&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De pas, veurem si fins aqui funciona tot.&lt;br /&gt;
&lt;br /&gt;
El los del sistema a on ens diu els moviments d'aques proces esta a '''/var/log/snpservices/mrtgccfg.log'''&lt;br /&gt;
&lt;br /&gt;
Al instalar el serveis SNPServices , s'ens ha afegit un cron a &lt;br /&gt;
&lt;br /&gt;
Aquest cron (script que s'autoexecuta segons programació) esta aqui '''/etc/cron.d/snpservices'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
*/30 *  * * *   root    if [ -x /usr/bin/php ]; then env LANG=C /usr/bin/php /usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php &amp;gt;&amp;gt; /var/log/snpservices/mrtgccfg.log 2&amp;gt;&amp;amp;1; fi&lt;br /&gt;
*/5 *   * * *   root    if [ ! -x /var/lock/mrtg ]; then mkdir /var/lock/mrtg ; fi; if [ -x /usr/bin/mrtg ] &amp;amp;&amp;amp; [ -r /var/lib/snpservices/data/mrtg.cfg ]; then env LANG=C /usr/bin/mrtg /var/lib/snpservices/data/mrtg.cfg --lock-file /var/lock/mrtg/guifi_l &amp;gt;&amp;gt; /var/log/snpservices/mrtg.log 2&amp;gt;&amp;amp;1; fi&lt;br /&gt;
/usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquest ve a dir que mitjançant el script /usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php, consulti l'arxiu guifi.cnml abans descrit i transformi el contingut en un xml disponible per al servei mrtg. Ho enmagatzema en /var/lib/snpservices/data/mrtg.cfg&lt;br /&gt;
&lt;br /&gt;
Una vegada el nostre servidor SNPServices client te les dades dels nodes a monitoritzar, es qua s'executa el proces de recerca de dades al mon amb el sistema mrtg. Ho fa amb /usr/bin/mrtg /var/lib/snpservices/data/mrtg.cfg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 7''' El servei mrtg consulta les dades amb ping i els envia a rrdtood que fabrica el gràfic.&lt;br /&gt;
el log dels movimetns del servei mrtg estan a '''/var/log/snpservices/mrtgc.log'''&lt;br /&gt;
Les dades per fer el gràfic s'enmagatzemen en '''/var/lib/snpservices/rrdb'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 8''' Els clients que volen informació dels nodes, la busquen al servidor web, el servidor web busca les dades i les troba dins del seu MySQL, pero els gràfics els va a buscar al servidor de gràfics d'aquell node, o sigui, al server $SNPGraphServerId.&lt;br /&gt;
&lt;br /&gt;
= Manuales =&lt;br /&gt;
* [[SNPservices]] Instalacion SNPServices mediante GIT. Aqui hay explicacion interesante, pero GIT no esta actualizado. Mejor usar instalacion de snpservices como servicio de Debian con metodo at-get&lt;br /&gt;
* [[Manual instalación Servicio SNPServices 1]] (Debian/Ubuntu) método apt + configuración virtualhost apache&lt;br /&gt;
* [[Manual instalación Servicio SNPServices 2]] (Debian/Ubuntu) método dpkg&lt;br /&gt;
* [[Manual instalación Servicio SNPServices 3]] (Debian/Ubuntu) extendido&lt;br /&gt;
* [[Servidor de gráficas 1]]  (Debian/Ubuntu) método apt + configuración virtualhost apache&lt;br /&gt;
* [[Servidor de gráficas 2]] (Debian/Ubuntu) método dpkg&lt;br /&gt;
* [[Servidor de gráficas 3]] (Debian/Ubuntu) extendido&lt;br /&gt;
&lt;br /&gt;
* [Tutorial servicio SNPServices http:www3.uji.es/~vrubert/guifi_linux/graph.html]&lt;br /&gt;
&lt;br /&gt;
= PMF =&lt;br /&gt;
* [[Regenerar los ficheros rrd]]&lt;br /&gt;
* tener en cuenta que al connectar un dispositivo por cable ponerlo en Lan o en la ubicacion que sea, sino puede que no grafique correctamente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Referencias =&lt;br /&gt;
*[http://www.guifi.net/proxy-debian manual debian de guifi.net]&lt;br /&gt;
*[http://asociacionjuvenilelcueto.info/node/156 manual de la associació Juvenil el Cueto (Rioja)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ca:Servidor_de_gràfiques]]&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas</id>
		<title>Servidor de gráficas</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas"/>
				<updated>2012-11-07T09:32:04Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= Definicion = &lt;br /&gt;
El servidor de gráficas se baas en el servicio de GUIFI llamado SNPServices.&lt;br /&gt;
El servidor SNPServices, y para ser mas exactos cliente SNPServices es un servidor linux, con php, apache, mrtg y rrdtool, no&lt;br /&gt;
necesita nada mas.&lt;br /&gt;
Le llamamos cliente porque el servidor Master SNPServices es un servidor que nos enviará informacion a nuestro servidor cliente SNPServices.&lt;br /&gt;
Aqui tienes un esquema que te hará ver claro esta definicion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Definicion para expertos&lt;br /&gt;
El cliente SNPServices consulta al Master snpservices la lista de nodos a monitorear, recogida previamente del servidor web mediante CNML, se parsea la lista y formatea scripts mrtg y los&lt;br /&gt;
ejecuta (pings y trafico) para generar un rrd y con consultas http desde el servidor web, se ejecuta un php que convierte los .rrd en imagenes y las muestra.&lt;br /&gt;
&lt;br /&gt;
El servidor WEB de guifi.net conoce la url del servidor de graficas de la zona de un nodo, o sea, los SNPServices clientes de cada zona. La web muestra sus datos locales y los datos remotos.&lt;br /&gt;
&lt;br /&gt;
Definicion extendida&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 1'''.-Un nodo crea un servicio de servidor de gráficas en la web. Este servicio le concede un numero que le identifica. A este valor le llamamos '''$SNPGraphServerId''' &lt;br /&gt;
Aquest servidor de gràfics, s'instalara un servei Apache, php i els ervei SNPServices. La direccio web l'anomenarem com '''$SNPDataServer_url'''&lt;br /&gt;
&lt;br /&gt;
Este servicio puede ser ademas supernodo de una zona y por tanto tiene el código de la zona. A este valor el llamamos '''$rootZone'''&lt;br /&gt;
&lt;br /&gt;
'''Pas 2''',. Al crearse este nodo, se actualiza la BBDD de la web- Esta base de datos contiene toda la información de los nodos,servicios y demas de GUIFI.NET&lt;br /&gt;
&lt;br /&gt;
'''Pas 3 i 4''' Abans de continuar amb el treball que fa el servidor SNPServices client, el Master SNPServices ha de fer un treball.&lt;br /&gt;
El Master SNPServices consulta al servidor Web una lista de todos los nodos de una zona. Aquesta pregunta la fa amb el script php que es diu '''refresh_cnml.php.''' . El servidor web li torna una llista de nodes en format CNML que enmagatzema en un arxiu que es diu /var/lib/snpservices/data/guifi.cnml&lt;br /&gt;
&lt;br /&gt;
Mostro l'inici de l'arxiu guifi.cnml&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;cnml version=&amp;quot;0.1&amp;quot; server_id=&amp;quot;1&amp;quot; server_url=&amp;quot;http://guifi.net&amp;quot; generated=&amp;quot;20121105 1247&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Exactament l'arxiu que obre es aixi $SNPDataServer_url.&amp;quot;/guifi/cnml/&amp;quot;.$rootZone.&amp;quot;/detail&amp;quot;&lt;br /&gt;
&lt;br /&gt;
El servidor web torna un arxiu i el servidor SNPServices el guarda a /var/lib/snpservices/data/guifi.cnml&lt;br /&gt;
Aquest arxiu s'actualitza de tant en tant i es necessari fer-ho ja que els canvis a la web no es reflexarien en els serveis a monitoritzar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 5 i 6'''.-Tornem al nostre servidor client SNPServices que estem muntant.&lt;br /&gt;
&lt;br /&gt;
El servidor SNPServices te una direccio an on buscar l'arxiu cnml crear per el Master SNPServices&lt;br /&gt;
$MRTGConfigSource='$SNPDataServer_url.&amp;quot;/graphs/cnml2mrtgcsv.php?server&amp;quot;.='.$SNPGraphServerId;&lt;br /&gt;
&lt;br /&gt;
En aquesta direccio es descarrega la llista de nodes a monitoritzar i transforma el contingut en una arxiu que conte els nodes a monitotritzar i en un llenguatge que el pugui entendre el servei mrtg.&lt;br /&gt;
&lt;br /&gt;
Mostro l'inici de l'arxiu mrtg.cfg&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# PathAdd: /usr/local/rrdtool-1.2.12/bin&lt;br /&gt;
# LibAdd: /usr/local/rrdtool-1.2.12/lib/perl/5.8.8/i386-linux-thread-multi&lt;br /&gt;
HtmlDir: /var/lib/snpservices/rrimg/&lt;br /&gt;
ImageDir: /var/lib/snpservices/rrimg/ &lt;br /&gt;
LogDir: /var/lib/snpservices/rrdb/&lt;br /&gt;
LogFormat: rrdtool&lt;br /&gt;
ThreshDir: /var/lib/snpservices/rrdb/&lt;br /&gt;
Forks: 12&lt;br /&gt;
Title[11833_ping]: Temps del ping de Futbol-Remei-VicRd1 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per veure aquesta llista en format csv desde web la podem demanar aixi&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$SNPDataServer_url/snpservices/graphs/cnml2mrtgcsv.php?server=$SNPGraphServerId&lt;br /&gt;
&lt;br /&gt;
Jo ho faig amb aquests valors&lt;br /&gt;
http://192.168.1.44/snpservices/graphs/cnml2mrtgcsv.php?server=6833&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De pas, veurem si fins aqui funciona tot.&lt;br /&gt;
&lt;br /&gt;
El los del sistema a on ens diu els moviments d'aques proces esta a '''/var/log/snpservices/mrtgccfg.log'''&lt;br /&gt;
&lt;br /&gt;
Al instalar el serveis SNPServices , s'ens ha afegit un cron a &lt;br /&gt;
&lt;br /&gt;
Aquest cron (script que s'autoexecuta segons programació) esta aqui '''/etc/cron.d/snpservices'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
*/30 *  * * *   root    if [ -x /usr/bin/php ]; then env LANG=C /usr/bin/php /usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php &amp;gt;&amp;gt; /var/log/snpservices/mrtgccfg.log 2&amp;gt;&amp;amp;1; fi&lt;br /&gt;
*/5 *   * * *   root    if [ ! -x /var/lock/mrtg ]; then mkdir /var/lock/mrtg ; fi; if [ -x /usr/bin/mrtg ] &amp;amp;&amp;amp; [ -r /var/lib/snpservices/data/mrtg.cfg ]; then env LANG=C /usr/bin/mrtg /var/lib/snpservices/data/mrtg.cfg --lock-file /var/lock/mrtg/guifi_l &amp;gt;&amp;gt; /var/log/snpservices/mrtg.log 2&amp;gt;&amp;amp;1; fi&lt;br /&gt;
/usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquest ve a dir que mitjançant el script /usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php, consulti l'arxiu guifi.cnml abans descrit i transformi el contingut en un xml disponible per al servei mrtg. Ho enmagatzema en /var/lib/snpservices/data/mrtg.cfg&lt;br /&gt;
&lt;br /&gt;
Una vegada el nostre servidor SNPServices client te les dades dels nodes a monitoritzar, es qua s'executa el proces de recerca de dades al mon amb el sistema mrtg. Ho fa amb /usr/bin/mrtg /var/lib/snpservices/data/mrtg.cfg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 7''' El servei mrtg consulta les dades amb ping i els envia a rrdtood que fabrica el gràfic.&lt;br /&gt;
el log dels movimetns del servei mrtg estan a '''/var/log/snpservices/mrtgc.log'''&lt;br /&gt;
Les dades per fer el gràfic s'enmagatzemen en '''/var/lib/snpservices/rrdb'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 8''' Els clients que volen informació dels nodes, la busquen al servidor web, el servidor web busca les dades i les troba dins del seu MySQL, pero els gràfics els va a buscar al servidor de gràfics d'aquell node, o sigui, al server $SNPGraphServerId.&lt;br /&gt;
&lt;br /&gt;
= Manuales =&lt;br /&gt;
* [[SNPservices]] Instalacion SNPServices mediante GIT. Aqui hay explicacion interesante, pero GIT no esta actualizado. Mejor usar instalacion de snpservices como servicio de Debian con metodo at-get&lt;br /&gt;
* [[Manual instalación Servicio SNPServices 1]] (Debian/Ubuntu) método apt + configuración virtualhost apache&lt;br /&gt;
* [[Manual instalación Servicio SNPServices 2]] (Debian/Ubuntu) método dpkg&lt;br /&gt;
* [[Manual instalación Servicio SNPServices 3]] (Debian/Ubuntu) extendido&lt;br /&gt;
* [[Servidor de gráficas 2]] (Debian/Ubuntu) método dpkg&lt;br /&gt;
* [[Servidor de gráficas 3]] (Debian/Ubuntu) extendido&lt;br /&gt;
&lt;br /&gt;
* [Tutorial servicio SNPServices http:www3.uji.es/~vrubert/guifi_linux/graph.html]&lt;br /&gt;
&lt;br /&gt;
= PMF =&lt;br /&gt;
* [[Regenerar los ficheros rrd]]&lt;br /&gt;
* tener en cuenta que al connectar un dispositivo por cable ponerlo en Lan o en la ubicacion que sea, sino puede que no grafique correctamente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Referencias =&lt;br /&gt;
*[http://www.guifi.net/proxy-debian manual debian de guifi.net]&lt;br /&gt;
*[http://asociacionjuvenilelcueto.info/node/156 manual de la associació Juvenil el Cueto (Rioja)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ca:Servidor_de_gràfiques]]&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas</id>
		<title>Servidor de gráficas</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas"/>
				<updated>2012-11-07T09:22:03Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: /* Manuales */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= Definicion = &lt;br /&gt;
El servidor de gráficas se baas en el servicio de GUIFI llamado SNPServices.&lt;br /&gt;
El servidor SNPServices, y para ser mas exactos cliente SNPServices es un servidor linux, con php, apache, mrtg y rrdtool, no&lt;br /&gt;
necesita nada mas.&lt;br /&gt;
Le llamamos cliente porque el servidor Master SNPServices es un servidor que nos enviará informacion a nuestro servidor cliente SNPServices.&lt;br /&gt;
Aqui tienes un esquema que te hará ver claro esta definicion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Definicion para expertos&lt;br /&gt;
El cliente SNPServices consulta al Master snpservices la lista de nodos a monitorear, recogida previamente del servidor web mediante CNML, se parsea la lista y formatea scripts mrtg y los&lt;br /&gt;
ejecuta (pings y trafico) para generar un rrd y con consultas http desde el servidor web, se ejecuta un php que convierte los .rrd en imagenes y las muestra.&lt;br /&gt;
&lt;br /&gt;
El servidor WEB de guifi.net conoce la url del servidor de graficas de la zona de un nodo, o sea, los SNPServices clientes de cada zona. La web muestra sus datos locales y los datos remotos.&lt;br /&gt;
&lt;br /&gt;
Definicion extendida&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 1'''.-Un nodo crea un servicio de servidor de gráficas en la web. Este servicio le concede un numero que le identifica. A este valor le llamamos '''$SNPGraphServerId''' &lt;br /&gt;
Aquest servidor de gràfics, s'instalara un servei Apache, php i els ervei SNPServices. La direccio web l'anomenarem com '''$SNPDataServer_url'''&lt;br /&gt;
&lt;br /&gt;
Este servicio puede ser ademas supernodo de una zona y por tanto tiene el código de la zona. A este valor el llamamos '''$rootZone'''&lt;br /&gt;
&lt;br /&gt;
'''Pas 2''',. Al crearse este nodo, se actualiza la BBDD de la web- Esta base de datos contiene toda la información de los nodos,servicios y demas de GUIFI.NET&lt;br /&gt;
&lt;br /&gt;
'''Pas 3 i 4''' Abans de continuar amb el treball que fa el servidor SNPServices client, el Master SNPServices ha de fer un treball.&lt;br /&gt;
El Master SNPServices consulta al servidor Web una lista de todos los nodos de una zona. Aquesta pregunta la fa amb el script php que es diu '''refresh_cnml.php.''' . El servidor web li torna una llista de nodes en format CNML que enmagatzema en un arxiu que es diu /var/lib/snpservices/data/guifi.cnml&lt;br /&gt;
&lt;br /&gt;
Mostro l'inici de l'arxiu guifi.cnml&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;cnml version=&amp;quot;0.1&amp;quot; server_id=&amp;quot;1&amp;quot; server_url=&amp;quot;http://guifi.net&amp;quot; generated=&amp;quot;20121105 1247&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Exactament l'arxiu que obre es aixi $SNPDataServer_url.&amp;quot;/guifi/cnml/&amp;quot;.$rootZone.&amp;quot;/detail&amp;quot;&lt;br /&gt;
&lt;br /&gt;
El servidor web torna un arxiu i el servidor SNPServices el guarda a /var/lib/snpservices/data/guifi.cnml&lt;br /&gt;
Aquest arxiu s'actualitza de tant en tant i es necessari fer-ho ja que els canvis a la web no es reflexarien en els serveis a monitoritzar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 5 i 6'''.-Tornem al nostre servidor client SNPServices que estem muntant.&lt;br /&gt;
&lt;br /&gt;
El servidor SNPServices te una direccio an on buscar l'arxiu cnml crear per el Master SNPServices&lt;br /&gt;
$MRTGConfigSource='$SNPDataServer_url.&amp;quot;/graphs/cnml2mrtgcsv.php?server&amp;quot;.='.$SNPGraphServerId;&lt;br /&gt;
&lt;br /&gt;
En aquesta direccio es descarrega la llista de nodes a monitoritzar i transforma el contingut en una arxiu que conte els nodes a monitotritzar i en un llenguatge que el pugui entendre el servei mrtg.&lt;br /&gt;
&lt;br /&gt;
Mostro l'inici de l'arxiu mrtg.cfg&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# PathAdd: /usr/local/rrdtool-1.2.12/bin&lt;br /&gt;
# LibAdd: /usr/local/rrdtool-1.2.12/lib/perl/5.8.8/i386-linux-thread-multi&lt;br /&gt;
HtmlDir: /var/lib/snpservices/rrimg/&lt;br /&gt;
ImageDir: /var/lib/snpservices/rrimg/ &lt;br /&gt;
LogDir: /var/lib/snpservices/rrdb/&lt;br /&gt;
LogFormat: rrdtool&lt;br /&gt;
ThreshDir: /var/lib/snpservices/rrdb/&lt;br /&gt;
Forks: 12&lt;br /&gt;
Title[11833_ping]: Temps del ping de Futbol-Remei-VicRd1 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per veure aquesta llista en format csv desde web la podem demanar aixi&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$SNPDataServer_url/snpservices/graphs/cnml2mrtgcsv.php?server=$SNPGraphServerId&lt;br /&gt;
&lt;br /&gt;
Jo ho faig amb aquests valors&lt;br /&gt;
http://192.168.1.44/snpservices/graphs/cnml2mrtgcsv.php?server=6833&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De pas, veurem si fins aqui funciona tot.&lt;br /&gt;
&lt;br /&gt;
El los del sistema a on ens diu els moviments d'aques proces esta a '''/var/log/snpservices/mrtgccfg.log'''&lt;br /&gt;
&lt;br /&gt;
Al instalar el serveis SNPServices , s'ens ha afegit un cron a &lt;br /&gt;
&lt;br /&gt;
Aquest cron (script que s'autoexecuta segons programació) esta aqui '''/etc/cron.d/snpservices'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
*/30 *  * * *   root    if [ -x /usr/bin/php ]; then env LANG=C /usr/bin/php /usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php &amp;gt;&amp;gt; /var/log/snpservices/mrtgccfg.log 2&amp;gt;&amp;amp;1; fi&lt;br /&gt;
*/5 *   * * *   root    if [ ! -x /var/lock/mrtg ]; then mkdir /var/lock/mrtg ; fi; if [ -x /usr/bin/mrtg ] &amp;amp;&amp;amp; [ -r /var/lib/snpservices/data/mrtg.cfg ]; then env LANG=C /usr/bin/mrtg /var/lib/snpservices/data/mrtg.cfg --lock-file /var/lock/mrtg/guifi_l &amp;gt;&amp;gt; /var/log/snpservices/mrtg.log 2&amp;gt;&amp;amp;1; fi&lt;br /&gt;
/usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquest ve a dir que mitjançant el script /usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php, consulti l'arxiu guifi.cnml abans descrit i transformi el contingut en un xml disponible per al servei mrtg. Ho enmagatzema en /var/lib/snpservices/data/mrtg.cfg&lt;br /&gt;
&lt;br /&gt;
Una vegada el nostre servidor SNPServices client te les dades dels nodes a monitoritzar, es qua s'executa el proces de recerca de dades al mon amb el sistema mrtg. Ho fa amb /usr/bin/mrtg /var/lib/snpservices/data/mrtg.cfg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 7''' El servei mrtg consulta les dades amb ping i els envia a rrdtood que fabrica el gràfic.&lt;br /&gt;
el log dels movimetns del servei mrtg estan a '''/var/log/snpservices/mrtgc.log'''&lt;br /&gt;
Les dades per fer el gràfic s'enmagatzemen en '''/var/lib/snpservices/rrdb'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 8''' Els clients que volen informació dels nodes, la busquen al servidor web, el servidor web busca les dades i les troba dins del seu MySQL, pero els gràfics els va a buscar al servidor de gràfics d'aquell node, o sigui, al server $SNPGraphServerId.&lt;br /&gt;
&lt;br /&gt;
= Manuales =&lt;br /&gt;
* [[SNPservices]] Instalacion SNPServices mediante GIT. Aqui hay explicacion interesante, pero GIT no esta actualizado. Mejor usar instalacion de snpservices como servicio de Debian con metodo at-get&lt;br /&gt;
* [[Manual instalación Servicio SNPServices 1]] (Debian/Ubuntu) método apt + configuración virtualhost apache&lt;br /&gt;
* [[Manual instalación Servicio SNPServices 2]] (Debian/Ubuntu) método dpkg&lt;br /&gt;
* [[Manual instalación Servicio SNPServices 3]] (Debian/Ubuntu) extendido&lt;br /&gt;
* [Tutorial servicio SNPServices http:www3.uji.es/~vrubert/guifi_linux/graph.html]&lt;br /&gt;
&lt;br /&gt;
= PMF =&lt;br /&gt;
* [[Regenerar los ficheros rrd]]&lt;br /&gt;
* tener en cuenta que al connectar un dispositivo por cable ponerlo en Lan o en la ubicacion que sea, sino puede que no grafique correctamente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Referencias =&lt;br /&gt;
*[http://www.guifi.net/proxy-debian manual debian de guifi.net]&lt;br /&gt;
*[http://asociacionjuvenilelcueto.info/node/156 manual de la associació Juvenil el Cueto (Rioja)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ca:Servidor_de_gràfiques]]&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas</id>
		<title>Servidor de gráficas</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas"/>
				<updated>2012-11-06T21:39:41Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: /* Manuales */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= Definicion = &lt;br /&gt;
El servidor de gráficas se baas en el servicio de GUIFI llamado SNPServices.&lt;br /&gt;
El servidor SNPServices, y para ser mas exactos cliente SNPServices es un servidor linux, con php, apache, mrtg y rrdtool, no&lt;br /&gt;
necesita nada mas.&lt;br /&gt;
Le llamamos cliente porque el servidor Master SNPServices es un servidor que nos enviará informacion a nuestro servidor cliente SNPServices.&lt;br /&gt;
Aqui tienes un esquema que te hará ver claro esta definicion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Definicion para expertos&lt;br /&gt;
El cliente SNPServices consulta al Master snpservices la lista de nodos a monitorear, recogida previamente del servidor web mediante CNML, se parsea la lista y formatea scripts mrtg y los&lt;br /&gt;
ejecuta (pings y trafico) para generar un rrd y con consultas http desde el servidor web, se ejecuta un php que convierte los .rrd en imagenes y las muestra.&lt;br /&gt;
&lt;br /&gt;
El servidor WEB de guifi.net conoce la url del servidor de graficas de la zona de un nodo, o sea, los SNPServices clientes de cada zona. La web muestra sus datos locales y los datos remotos.&lt;br /&gt;
&lt;br /&gt;
Definicion extendida&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 1'''.-Un nodo crea un servicio de servidor de gráficas en la web. Este servicio le concede un numero que le identifica. A este valor le llamamos '''$SNPGraphServerId''' &lt;br /&gt;
Aquest servidor de gràfics, s'instalara un servei Apache, php i els ervei SNPServices. La direccio web l'anomenarem com '''$SNPDataServer_url'''&lt;br /&gt;
&lt;br /&gt;
Este servicio puede ser ademas supernodo de una zona y por tanto tiene el código de la zona. A este valor el llamamos '''$rootZone'''&lt;br /&gt;
&lt;br /&gt;
'''Pas 2''',. Al crearse este nodo, se actualiza la BBDD de la web- Esta base de datos contiene toda la información de los nodos,servicios y demas de GUIFI.NET&lt;br /&gt;
&lt;br /&gt;
'''Pas 3 i 4''' Abans de continuar amb el treball que fa el servidor SNPServices client, el Master SNPServices ha de fer un treball.&lt;br /&gt;
El Master SNPServices consulta al servidor Web una lista de todos los nodos de una zona. Aquesta pregunta la fa amb el script php que es diu '''refresh_cnml.php.''' . El servidor web li torna una llista de nodes en format CNML que enmagatzema en un arxiu que es diu /var/lib/snpservices/data/guifi.cnml&lt;br /&gt;
&lt;br /&gt;
Mostro l'inici de l'arxiu guifi.cnml&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;cnml version=&amp;quot;0.1&amp;quot; server_id=&amp;quot;1&amp;quot; server_url=&amp;quot;http://guifi.net&amp;quot; generated=&amp;quot;20121105 1247&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Exactament l'arxiu que obre es aixi $SNPDataServer_url.&amp;quot;/guifi/cnml/&amp;quot;.$rootZone.&amp;quot;/detail&amp;quot;&lt;br /&gt;
&lt;br /&gt;
El servidor web torna un arxiu i el servidor SNPServices el guarda a /var/lib/snpservices/data/guifi.cnml&lt;br /&gt;
Aquest arxiu s'actualitza de tant en tant i es necessari fer-ho ja que els canvis a la web no es reflexarien en els serveis a monitoritzar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 5 i 6'''.-Tornem al nostre servidor client SNPServices que estem muntant.&lt;br /&gt;
&lt;br /&gt;
El servidor SNPServices te una direccio an on buscar l'arxiu cnml crear per el Master SNPServices&lt;br /&gt;
$MRTGConfigSource='$SNPDataServer_url.&amp;quot;/graphs/cnml2mrtgcsv.php?server&amp;quot;.='.$SNPGraphServerId;&lt;br /&gt;
&lt;br /&gt;
En aquesta direccio es descarrega la llista de nodes a monitoritzar i transforma el contingut en una arxiu que conte els nodes a monitotritzar i en un llenguatge que el pugui entendre el servei mrtg.&lt;br /&gt;
&lt;br /&gt;
Mostro l'inici de l'arxiu mrtg.cfg&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# PathAdd: /usr/local/rrdtool-1.2.12/bin&lt;br /&gt;
# LibAdd: /usr/local/rrdtool-1.2.12/lib/perl/5.8.8/i386-linux-thread-multi&lt;br /&gt;
HtmlDir: /var/lib/snpservices/rrimg/&lt;br /&gt;
ImageDir: /var/lib/snpservices/rrimg/ &lt;br /&gt;
LogDir: /var/lib/snpservices/rrdb/&lt;br /&gt;
LogFormat: rrdtool&lt;br /&gt;
ThreshDir: /var/lib/snpservices/rrdb/&lt;br /&gt;
Forks: 12&lt;br /&gt;
Title[11833_ping]: Temps del ping de Futbol-Remei-VicRd1 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per veure aquesta llista en format csv desde web la podem demanar aixi&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$SNPDataServer_url/snpservices/graphs/cnml2mrtgcsv.php?server=$SNPGraphServerId&lt;br /&gt;
&lt;br /&gt;
Jo ho faig amb aquests valors&lt;br /&gt;
http://192.168.1.44/snpservices/graphs/cnml2mrtgcsv.php?server=6833&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De pas, veurem si fins aqui funciona tot.&lt;br /&gt;
&lt;br /&gt;
El los del sistema a on ens diu els moviments d'aques proces esta a '''/var/log/snpservices/mrtgccfg.log'''&lt;br /&gt;
&lt;br /&gt;
Al instalar el serveis SNPServices , s'ens ha afegit un cron a &lt;br /&gt;
&lt;br /&gt;
Aquest cron (script que s'autoexecuta segons programació) esta aqui '''/etc/cron.d/snpservices'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
*/30 *  * * *   root    if [ -x /usr/bin/php ]; then env LANG=C /usr/bin/php /usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php &amp;gt;&amp;gt; /var/log/snpservices/mrtgccfg.log 2&amp;gt;&amp;amp;1; fi&lt;br /&gt;
*/5 *   * * *   root    if [ ! -x /var/lock/mrtg ]; then mkdir /var/lock/mrtg ; fi; if [ -x /usr/bin/mrtg ] &amp;amp;&amp;amp; [ -r /var/lib/snpservices/data/mrtg.cfg ]; then env LANG=C /usr/bin/mrtg /var/lib/snpservices/data/mrtg.cfg --lock-file /var/lock/mrtg/guifi_l &amp;gt;&amp;gt; /var/log/snpservices/mrtg.log 2&amp;gt;&amp;amp;1; fi&lt;br /&gt;
/usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquest ve a dir que mitjançant el script /usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php, consulti l'arxiu guifi.cnml abans descrit i transformi el contingut en un xml disponible per al servei mrtg. Ho enmagatzema en /var/lib/snpservices/data/mrtg.cfg&lt;br /&gt;
&lt;br /&gt;
Una vegada el nostre servidor SNPServices client te les dades dels nodes a monitoritzar, es qua s'executa el proces de recerca de dades al mon amb el sistema mrtg. Ho fa amb /usr/bin/mrtg /var/lib/snpservices/data/mrtg.cfg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 7''' El servei mrtg consulta les dades amb ping i els envia a rrdtood que fabrica el gràfic.&lt;br /&gt;
el log dels movimetns del servei mrtg estan a '''/var/log/snpservices/mrtgc.log'''&lt;br /&gt;
Les dades per fer el gràfic s'enmagatzemen en '''/var/lib/snpservices/rrdb'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 8''' Els clients que volen informació dels nodes, la busquen al servidor web, el servidor web busca les dades i les troba dins del seu MySQL, pero els gràfics els va a buscar al servidor de gràfics d'aquell node, o sigui, al server $SNPGraphServerId.&lt;br /&gt;
&lt;br /&gt;
= Manuales =&lt;br /&gt;
* [[Manual instalación Servicio SNPServices 1]] (Debian/Ubuntu) método apt + configuración virtualhost apache&lt;br /&gt;
* [[Manual instalación Servicio SNPServices 2]] (Debian/Ubuntu) método dpkg&lt;br /&gt;
* [[Manual instalación Servicio SNPServices 3]] (Debian/Ubuntu) extendido&lt;br /&gt;
* [Tutorial servicio SNPServices http:www3.uji.es/~vrubert/guifi_linux/graph.html]&lt;br /&gt;
&lt;br /&gt;
= PMF =&lt;br /&gt;
* [[Regenerar los ficheros rrd]]&lt;br /&gt;
* tener en cuenta que al connectar un dispositivo por cable ponerlo en Lan o en la ubicacion que sea, sino puede que no grafique correctamente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Referencias =&lt;br /&gt;
*[http://www.guifi.net/proxy-debian manual debian de guifi.net]&lt;br /&gt;
*[http://asociacionjuvenilelcueto.info/node/156 manual de la associació Juvenil el Cueto (Rioja)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ca:Servidor_de_gràfiques]]&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas</id>
		<title>Servidor de gráficas</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas"/>
				<updated>2012-11-06T21:39:20Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: /* Manuales */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= Definicion = &lt;br /&gt;
El servidor de gráficas se baas en el servicio de GUIFI llamado SNPServices.&lt;br /&gt;
El servidor SNPServices, y para ser mas exactos cliente SNPServices es un servidor linux, con php, apache, mrtg y rrdtool, no&lt;br /&gt;
necesita nada mas.&lt;br /&gt;
Le llamamos cliente porque el servidor Master SNPServices es un servidor que nos enviará informacion a nuestro servidor cliente SNPServices.&lt;br /&gt;
Aqui tienes un esquema que te hará ver claro esta definicion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Definicion para expertos&lt;br /&gt;
El cliente SNPServices consulta al Master snpservices la lista de nodos a monitorear, recogida previamente del servidor web mediante CNML, se parsea la lista y formatea scripts mrtg y los&lt;br /&gt;
ejecuta (pings y trafico) para generar un rrd y con consultas http desde el servidor web, se ejecuta un php que convierte los .rrd en imagenes y las muestra.&lt;br /&gt;
&lt;br /&gt;
El servidor WEB de guifi.net conoce la url del servidor de graficas de la zona de un nodo, o sea, los SNPServices clientes de cada zona. La web muestra sus datos locales y los datos remotos.&lt;br /&gt;
&lt;br /&gt;
Definicion extendida&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 1'''.-Un nodo crea un servicio de servidor de gráficas en la web. Este servicio le concede un numero que le identifica. A este valor le llamamos '''$SNPGraphServerId''' &lt;br /&gt;
Aquest servidor de gràfics, s'instalara un servei Apache, php i els ervei SNPServices. La direccio web l'anomenarem com '''$SNPDataServer_url'''&lt;br /&gt;
&lt;br /&gt;
Este servicio puede ser ademas supernodo de una zona y por tanto tiene el código de la zona. A este valor el llamamos '''$rootZone'''&lt;br /&gt;
&lt;br /&gt;
'''Pas 2''',. Al crearse este nodo, se actualiza la BBDD de la web- Esta base de datos contiene toda la información de los nodos,servicios y demas de GUIFI.NET&lt;br /&gt;
&lt;br /&gt;
'''Pas 3 i 4''' Abans de continuar amb el treball que fa el servidor SNPServices client, el Master SNPServices ha de fer un treball.&lt;br /&gt;
El Master SNPServices consulta al servidor Web una lista de todos los nodos de una zona. Aquesta pregunta la fa amb el script php que es diu '''refresh_cnml.php.''' . El servidor web li torna una llista de nodes en format CNML que enmagatzema en un arxiu que es diu /var/lib/snpservices/data/guifi.cnml&lt;br /&gt;
&lt;br /&gt;
Mostro l'inici de l'arxiu guifi.cnml&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;cnml version=&amp;quot;0.1&amp;quot; server_id=&amp;quot;1&amp;quot; server_url=&amp;quot;http://guifi.net&amp;quot; generated=&amp;quot;20121105 1247&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Exactament l'arxiu que obre es aixi $SNPDataServer_url.&amp;quot;/guifi/cnml/&amp;quot;.$rootZone.&amp;quot;/detail&amp;quot;&lt;br /&gt;
&lt;br /&gt;
El servidor web torna un arxiu i el servidor SNPServices el guarda a /var/lib/snpservices/data/guifi.cnml&lt;br /&gt;
Aquest arxiu s'actualitza de tant en tant i es necessari fer-ho ja que els canvis a la web no es reflexarien en els serveis a monitoritzar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 5 i 6'''.-Tornem al nostre servidor client SNPServices que estem muntant.&lt;br /&gt;
&lt;br /&gt;
El servidor SNPServices te una direccio an on buscar l'arxiu cnml crear per el Master SNPServices&lt;br /&gt;
$MRTGConfigSource='$SNPDataServer_url.&amp;quot;/graphs/cnml2mrtgcsv.php?server&amp;quot;.='.$SNPGraphServerId;&lt;br /&gt;
&lt;br /&gt;
En aquesta direccio es descarrega la llista de nodes a monitoritzar i transforma el contingut en una arxiu que conte els nodes a monitotritzar i en un llenguatge que el pugui entendre el servei mrtg.&lt;br /&gt;
&lt;br /&gt;
Mostro l'inici de l'arxiu mrtg.cfg&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# PathAdd: /usr/local/rrdtool-1.2.12/bin&lt;br /&gt;
# LibAdd: /usr/local/rrdtool-1.2.12/lib/perl/5.8.8/i386-linux-thread-multi&lt;br /&gt;
HtmlDir: /var/lib/snpservices/rrimg/&lt;br /&gt;
ImageDir: /var/lib/snpservices/rrimg/ &lt;br /&gt;
LogDir: /var/lib/snpservices/rrdb/&lt;br /&gt;
LogFormat: rrdtool&lt;br /&gt;
ThreshDir: /var/lib/snpservices/rrdb/&lt;br /&gt;
Forks: 12&lt;br /&gt;
Title[11833_ping]: Temps del ping de Futbol-Remei-VicRd1 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per veure aquesta llista en format csv desde web la podem demanar aixi&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$SNPDataServer_url/snpservices/graphs/cnml2mrtgcsv.php?server=$SNPGraphServerId&lt;br /&gt;
&lt;br /&gt;
Jo ho faig amb aquests valors&lt;br /&gt;
http://192.168.1.44/snpservices/graphs/cnml2mrtgcsv.php?server=6833&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De pas, veurem si fins aqui funciona tot.&lt;br /&gt;
&lt;br /&gt;
El los del sistema a on ens diu els moviments d'aques proces esta a '''/var/log/snpservices/mrtgccfg.log'''&lt;br /&gt;
&lt;br /&gt;
Al instalar el serveis SNPServices , s'ens ha afegit un cron a &lt;br /&gt;
&lt;br /&gt;
Aquest cron (script que s'autoexecuta segons programació) esta aqui '''/etc/cron.d/snpservices'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
*/30 *  * * *   root    if [ -x /usr/bin/php ]; then env LANG=C /usr/bin/php /usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php &amp;gt;&amp;gt; /var/log/snpservices/mrtgccfg.log 2&amp;gt;&amp;amp;1; fi&lt;br /&gt;
*/5 *   * * *   root    if [ ! -x /var/lock/mrtg ]; then mkdir /var/lock/mrtg ; fi; if [ -x /usr/bin/mrtg ] &amp;amp;&amp;amp; [ -r /var/lib/snpservices/data/mrtg.cfg ]; then env LANG=C /usr/bin/mrtg /var/lib/snpservices/data/mrtg.cfg --lock-file /var/lock/mrtg/guifi_l &amp;gt;&amp;gt; /var/log/snpservices/mrtg.log 2&amp;gt;&amp;amp;1; fi&lt;br /&gt;
/usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquest ve a dir que mitjançant el script /usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php, consulti l'arxiu guifi.cnml abans descrit i transformi el contingut en un xml disponible per al servei mrtg. Ho enmagatzema en /var/lib/snpservices/data/mrtg.cfg&lt;br /&gt;
&lt;br /&gt;
Una vegada el nostre servidor SNPServices client te les dades dels nodes a monitoritzar, es qua s'executa el proces de recerca de dades al mon amb el sistema mrtg. Ho fa amb /usr/bin/mrtg /var/lib/snpservices/data/mrtg.cfg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 7''' El servei mrtg consulta les dades amb ping i els envia a rrdtood que fabrica el gràfic.&lt;br /&gt;
el log dels movimetns del servei mrtg estan a '''/var/log/snpservices/mrtgc.log'''&lt;br /&gt;
Les dades per fer el gràfic s'enmagatzemen en '''/var/lib/snpservices/rrdb'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 8''' Els clients que volen informació dels nodes, la busquen al servidor web, el servidor web busca les dades i les troba dins del seu MySQL, pero els gràfics els va a buscar al servidor de gràfics d'aquell node, o sigui, al server $SNPGraphServerId.&lt;br /&gt;
&lt;br /&gt;
= Manuales =&lt;br /&gt;
* [[Manual instalación Servicio SNPServices 1]] (Debian/Ubuntu) método apt + configuración virtualhost apache&lt;br /&gt;
* [[Manual instalación Servicio SNPServices 2]] (Debian/Ubuntu) método dpkg&lt;br /&gt;
* [[Manual instalación Servicio SNPServices 3]] (Debian/Ubuntu) extendido&lt;br /&gt;
* [[Tutorial servicio SNPServices http:www3.uji.es/~vrubert/guifi_linux/graph.html]&lt;br /&gt;
&lt;br /&gt;
= PMF =&lt;br /&gt;
* [[Regenerar los ficheros rrd]]&lt;br /&gt;
* tener en cuenta que al connectar un dispositivo por cable ponerlo en Lan o en la ubicacion que sea, sino puede que no grafique correctamente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Referencias =&lt;br /&gt;
*[http://www.guifi.net/proxy-debian manual debian de guifi.net]&lt;br /&gt;
*[http://asociacionjuvenilelcueto.info/node/156 manual de la associació Juvenil el Cueto (Rioja)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ca:Servidor_de_gràfiques]]&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas</id>
		<title>Servidor de gráficas</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas"/>
				<updated>2012-11-06T21:38:45Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: /* Manuales */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= Definicion = &lt;br /&gt;
El servidor de gráficas se baas en el servicio de GUIFI llamado SNPServices.&lt;br /&gt;
El servidor SNPServices, y para ser mas exactos cliente SNPServices es un servidor linux, con php, apache, mrtg y rrdtool, no&lt;br /&gt;
necesita nada mas.&lt;br /&gt;
Le llamamos cliente porque el servidor Master SNPServices es un servidor que nos enviará informacion a nuestro servidor cliente SNPServices.&lt;br /&gt;
Aqui tienes un esquema que te hará ver claro esta definicion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Definicion para expertos&lt;br /&gt;
El cliente SNPServices consulta al Master snpservices la lista de nodos a monitorear, recogida previamente del servidor web mediante CNML, se parsea la lista y formatea scripts mrtg y los&lt;br /&gt;
ejecuta (pings y trafico) para generar un rrd y con consultas http desde el servidor web, se ejecuta un php que convierte los .rrd en imagenes y las muestra.&lt;br /&gt;
&lt;br /&gt;
El servidor WEB de guifi.net conoce la url del servidor de graficas de la zona de un nodo, o sea, los SNPServices clientes de cada zona. La web muestra sus datos locales y los datos remotos.&lt;br /&gt;
&lt;br /&gt;
Definicion extendida&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 1'''.-Un nodo crea un servicio de servidor de gráficas en la web. Este servicio le concede un numero que le identifica. A este valor le llamamos '''$SNPGraphServerId''' &lt;br /&gt;
Aquest servidor de gràfics, s'instalara un servei Apache, php i els ervei SNPServices. La direccio web l'anomenarem com '''$SNPDataServer_url'''&lt;br /&gt;
&lt;br /&gt;
Este servicio puede ser ademas supernodo de una zona y por tanto tiene el código de la zona. A este valor el llamamos '''$rootZone'''&lt;br /&gt;
&lt;br /&gt;
'''Pas 2''',. Al crearse este nodo, se actualiza la BBDD de la web- Esta base de datos contiene toda la información de los nodos,servicios y demas de GUIFI.NET&lt;br /&gt;
&lt;br /&gt;
'''Pas 3 i 4''' Abans de continuar amb el treball que fa el servidor SNPServices client, el Master SNPServices ha de fer un treball.&lt;br /&gt;
El Master SNPServices consulta al servidor Web una lista de todos los nodos de una zona. Aquesta pregunta la fa amb el script php que es diu '''refresh_cnml.php.''' . El servidor web li torna una llista de nodes en format CNML que enmagatzema en un arxiu que es diu /var/lib/snpservices/data/guifi.cnml&lt;br /&gt;
&lt;br /&gt;
Mostro l'inici de l'arxiu guifi.cnml&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;cnml version=&amp;quot;0.1&amp;quot; server_id=&amp;quot;1&amp;quot; server_url=&amp;quot;http://guifi.net&amp;quot; generated=&amp;quot;20121105 1247&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Exactament l'arxiu que obre es aixi $SNPDataServer_url.&amp;quot;/guifi/cnml/&amp;quot;.$rootZone.&amp;quot;/detail&amp;quot;&lt;br /&gt;
&lt;br /&gt;
El servidor web torna un arxiu i el servidor SNPServices el guarda a /var/lib/snpservices/data/guifi.cnml&lt;br /&gt;
Aquest arxiu s'actualitza de tant en tant i es necessari fer-ho ja que els canvis a la web no es reflexarien en els serveis a monitoritzar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 5 i 6'''.-Tornem al nostre servidor client SNPServices que estem muntant.&lt;br /&gt;
&lt;br /&gt;
El servidor SNPServices te una direccio an on buscar l'arxiu cnml crear per el Master SNPServices&lt;br /&gt;
$MRTGConfigSource='$SNPDataServer_url.&amp;quot;/graphs/cnml2mrtgcsv.php?server&amp;quot;.='.$SNPGraphServerId;&lt;br /&gt;
&lt;br /&gt;
En aquesta direccio es descarrega la llista de nodes a monitoritzar i transforma el contingut en una arxiu que conte els nodes a monitotritzar i en un llenguatge que el pugui entendre el servei mrtg.&lt;br /&gt;
&lt;br /&gt;
Mostro l'inici de l'arxiu mrtg.cfg&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# PathAdd: /usr/local/rrdtool-1.2.12/bin&lt;br /&gt;
# LibAdd: /usr/local/rrdtool-1.2.12/lib/perl/5.8.8/i386-linux-thread-multi&lt;br /&gt;
HtmlDir: /var/lib/snpservices/rrimg/&lt;br /&gt;
ImageDir: /var/lib/snpservices/rrimg/ &lt;br /&gt;
LogDir: /var/lib/snpservices/rrdb/&lt;br /&gt;
LogFormat: rrdtool&lt;br /&gt;
ThreshDir: /var/lib/snpservices/rrdb/&lt;br /&gt;
Forks: 12&lt;br /&gt;
Title[11833_ping]: Temps del ping de Futbol-Remei-VicRd1 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per veure aquesta llista en format csv desde web la podem demanar aixi&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$SNPDataServer_url/snpservices/graphs/cnml2mrtgcsv.php?server=$SNPGraphServerId&lt;br /&gt;
&lt;br /&gt;
Jo ho faig amb aquests valors&lt;br /&gt;
http://192.168.1.44/snpservices/graphs/cnml2mrtgcsv.php?server=6833&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De pas, veurem si fins aqui funciona tot.&lt;br /&gt;
&lt;br /&gt;
El los del sistema a on ens diu els moviments d'aques proces esta a '''/var/log/snpservices/mrtgccfg.log'''&lt;br /&gt;
&lt;br /&gt;
Al instalar el serveis SNPServices , s'ens ha afegit un cron a &lt;br /&gt;
&lt;br /&gt;
Aquest cron (script que s'autoexecuta segons programació) esta aqui '''/etc/cron.d/snpservices'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
*/30 *  * * *   root    if [ -x /usr/bin/php ]; then env LANG=C /usr/bin/php /usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php &amp;gt;&amp;gt; /var/log/snpservices/mrtgccfg.log 2&amp;gt;&amp;amp;1; fi&lt;br /&gt;
*/5 *   * * *   root    if [ ! -x /var/lock/mrtg ]; then mkdir /var/lock/mrtg ; fi; if [ -x /usr/bin/mrtg ] &amp;amp;&amp;amp; [ -r /var/lib/snpservices/data/mrtg.cfg ]; then env LANG=C /usr/bin/mrtg /var/lib/snpservices/data/mrtg.cfg --lock-file /var/lock/mrtg/guifi_l &amp;gt;&amp;gt; /var/log/snpservices/mrtg.log 2&amp;gt;&amp;amp;1; fi&lt;br /&gt;
/usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquest ve a dir que mitjançant el script /usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php, consulti l'arxiu guifi.cnml abans descrit i transformi el contingut en un xml disponible per al servei mrtg. Ho enmagatzema en /var/lib/snpservices/data/mrtg.cfg&lt;br /&gt;
&lt;br /&gt;
Una vegada el nostre servidor SNPServices client te les dades dels nodes a monitoritzar, es qua s'executa el proces de recerca de dades al mon amb el sistema mrtg. Ho fa amb /usr/bin/mrtg /var/lib/snpservices/data/mrtg.cfg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 7''' El servei mrtg consulta les dades amb ping i els envia a rrdtood que fabrica el gràfic.&lt;br /&gt;
el log dels movimetns del servei mrtg estan a '''/var/log/snpservices/mrtgc.log'''&lt;br /&gt;
Les dades per fer el gràfic s'enmagatzemen en '''/var/lib/snpservices/rrdb'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 8''' Els clients que volen informació dels nodes, la busquen al servidor web, el servidor web busca les dades i les troba dins del seu MySQL, pero els gràfics els va a buscar al servidor de gràfics d'aquell node, o sigui, al server $SNPGraphServerId.&lt;br /&gt;
&lt;br /&gt;
= Manuales =&lt;br /&gt;
* [[Manual instalación Servicio SNPServices 1]] (Debian/Ubuntu) método apt + configuración virtualhost apache&lt;br /&gt;
* [[Manual instalación Servicio SNPServices 2]] (Debian/Ubuntu) método dpkg&lt;br /&gt;
* [[Manual instalación Servicio SNPServices 3]] (Debian/Ubuntu) extendido&lt;br /&gt;
* [[Tutorial servicio SNPServices][http:www3.uji.es/~vrubert/guifi_linux/graph.html]&lt;br /&gt;
&lt;br /&gt;
= PMF =&lt;br /&gt;
* [[Regenerar los ficheros rrd]]&lt;br /&gt;
* tener en cuenta que al connectar un dispositivo por cable ponerlo en Lan o en la ubicacion que sea, sino puede que no grafique correctamente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Referencias =&lt;br /&gt;
*[http://www.guifi.net/proxy-debian manual debian de guifi.net]&lt;br /&gt;
*[http://asociacionjuvenilelcueto.info/node/156 manual de la associació Juvenil el Cueto (Rioja)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ca:Servidor_de_gràfiques]]&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas</id>
		<title>Servidor de gráficas</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas"/>
				<updated>2012-11-06T21:38:00Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: /* Referencias */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= Definicion = &lt;br /&gt;
El servidor de gráficas se baas en el servicio de GUIFI llamado SNPServices.&lt;br /&gt;
El servidor SNPServices, y para ser mas exactos cliente SNPServices es un servidor linux, con php, apache, mrtg y rrdtool, no&lt;br /&gt;
necesita nada mas.&lt;br /&gt;
Le llamamos cliente porque el servidor Master SNPServices es un servidor que nos enviará informacion a nuestro servidor cliente SNPServices.&lt;br /&gt;
Aqui tienes un esquema que te hará ver claro esta definicion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Definicion para expertos&lt;br /&gt;
El cliente SNPServices consulta al Master snpservices la lista de nodos a monitorear, recogida previamente del servidor web mediante CNML, se parsea la lista y formatea scripts mrtg y los&lt;br /&gt;
ejecuta (pings y trafico) para generar un rrd y con consultas http desde el servidor web, se ejecuta un php que convierte los .rrd en imagenes y las muestra.&lt;br /&gt;
&lt;br /&gt;
El servidor WEB de guifi.net conoce la url del servidor de graficas de la zona de un nodo, o sea, los SNPServices clientes de cada zona. La web muestra sus datos locales y los datos remotos.&lt;br /&gt;
&lt;br /&gt;
Definicion extendida&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 1'''.-Un nodo crea un servicio de servidor de gráficas en la web. Este servicio le concede un numero que le identifica. A este valor le llamamos '''$SNPGraphServerId''' &lt;br /&gt;
Aquest servidor de gràfics, s'instalara un servei Apache, php i els ervei SNPServices. La direccio web l'anomenarem com '''$SNPDataServer_url'''&lt;br /&gt;
&lt;br /&gt;
Este servicio puede ser ademas supernodo de una zona y por tanto tiene el código de la zona. A este valor el llamamos '''$rootZone'''&lt;br /&gt;
&lt;br /&gt;
'''Pas 2''',. Al crearse este nodo, se actualiza la BBDD de la web- Esta base de datos contiene toda la información de los nodos,servicios y demas de GUIFI.NET&lt;br /&gt;
&lt;br /&gt;
'''Pas 3 i 4''' Abans de continuar amb el treball que fa el servidor SNPServices client, el Master SNPServices ha de fer un treball.&lt;br /&gt;
El Master SNPServices consulta al servidor Web una lista de todos los nodos de una zona. Aquesta pregunta la fa amb el script php que es diu '''refresh_cnml.php.''' . El servidor web li torna una llista de nodes en format CNML que enmagatzema en un arxiu que es diu /var/lib/snpservices/data/guifi.cnml&lt;br /&gt;
&lt;br /&gt;
Mostro l'inici de l'arxiu guifi.cnml&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;cnml version=&amp;quot;0.1&amp;quot; server_id=&amp;quot;1&amp;quot; server_url=&amp;quot;http://guifi.net&amp;quot; generated=&amp;quot;20121105 1247&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Exactament l'arxiu que obre es aixi $SNPDataServer_url.&amp;quot;/guifi/cnml/&amp;quot;.$rootZone.&amp;quot;/detail&amp;quot;&lt;br /&gt;
&lt;br /&gt;
El servidor web torna un arxiu i el servidor SNPServices el guarda a /var/lib/snpservices/data/guifi.cnml&lt;br /&gt;
Aquest arxiu s'actualitza de tant en tant i es necessari fer-ho ja que els canvis a la web no es reflexarien en els serveis a monitoritzar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 5 i 6'''.-Tornem al nostre servidor client SNPServices que estem muntant.&lt;br /&gt;
&lt;br /&gt;
El servidor SNPServices te una direccio an on buscar l'arxiu cnml crear per el Master SNPServices&lt;br /&gt;
$MRTGConfigSource='$SNPDataServer_url.&amp;quot;/graphs/cnml2mrtgcsv.php?server&amp;quot;.='.$SNPGraphServerId;&lt;br /&gt;
&lt;br /&gt;
En aquesta direccio es descarrega la llista de nodes a monitoritzar i transforma el contingut en una arxiu que conte els nodes a monitotritzar i en un llenguatge que el pugui entendre el servei mrtg.&lt;br /&gt;
&lt;br /&gt;
Mostro l'inici de l'arxiu mrtg.cfg&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# PathAdd: /usr/local/rrdtool-1.2.12/bin&lt;br /&gt;
# LibAdd: /usr/local/rrdtool-1.2.12/lib/perl/5.8.8/i386-linux-thread-multi&lt;br /&gt;
HtmlDir: /var/lib/snpservices/rrimg/&lt;br /&gt;
ImageDir: /var/lib/snpservices/rrimg/ &lt;br /&gt;
LogDir: /var/lib/snpservices/rrdb/&lt;br /&gt;
LogFormat: rrdtool&lt;br /&gt;
ThreshDir: /var/lib/snpservices/rrdb/&lt;br /&gt;
Forks: 12&lt;br /&gt;
Title[11833_ping]: Temps del ping de Futbol-Remei-VicRd1 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per veure aquesta llista en format csv desde web la podem demanar aixi&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$SNPDataServer_url/snpservices/graphs/cnml2mrtgcsv.php?server=$SNPGraphServerId&lt;br /&gt;
&lt;br /&gt;
Jo ho faig amb aquests valors&lt;br /&gt;
http://192.168.1.44/snpservices/graphs/cnml2mrtgcsv.php?server=6833&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De pas, veurem si fins aqui funciona tot.&lt;br /&gt;
&lt;br /&gt;
El los del sistema a on ens diu els moviments d'aques proces esta a '''/var/log/snpservices/mrtgccfg.log'''&lt;br /&gt;
&lt;br /&gt;
Al instalar el serveis SNPServices , s'ens ha afegit un cron a &lt;br /&gt;
&lt;br /&gt;
Aquest cron (script que s'autoexecuta segons programació) esta aqui '''/etc/cron.d/snpservices'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
*/30 *  * * *   root    if [ -x /usr/bin/php ]; then env LANG=C /usr/bin/php /usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php &amp;gt;&amp;gt; /var/log/snpservices/mrtgccfg.log 2&amp;gt;&amp;amp;1; fi&lt;br /&gt;
*/5 *   * * *   root    if [ ! -x /var/lock/mrtg ]; then mkdir /var/lock/mrtg ; fi; if [ -x /usr/bin/mrtg ] &amp;amp;&amp;amp; [ -r /var/lib/snpservices/data/mrtg.cfg ]; then env LANG=C /usr/bin/mrtg /var/lib/snpservices/data/mrtg.cfg --lock-file /var/lock/mrtg/guifi_l &amp;gt;&amp;gt; /var/log/snpservices/mrtg.log 2&amp;gt;&amp;amp;1; fi&lt;br /&gt;
/usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquest ve a dir que mitjançant el script /usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php, consulti l'arxiu guifi.cnml abans descrit i transformi el contingut en un xml disponible per al servei mrtg. Ho enmagatzema en /var/lib/snpservices/data/mrtg.cfg&lt;br /&gt;
&lt;br /&gt;
Una vegada el nostre servidor SNPServices client te les dades dels nodes a monitoritzar, es qua s'executa el proces de recerca de dades al mon amb el sistema mrtg. Ho fa amb /usr/bin/mrtg /var/lib/snpservices/data/mrtg.cfg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 7''' El servei mrtg consulta les dades amb ping i els envia a rrdtood que fabrica el gràfic.&lt;br /&gt;
el log dels movimetns del servei mrtg estan a '''/var/log/snpservices/mrtgc.log'''&lt;br /&gt;
Les dades per fer el gràfic s'enmagatzemen en '''/var/lib/snpservices/rrdb'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 8''' Els clients que volen informació dels nodes, la busquen al servidor web, el servidor web busca les dades i les troba dins del seu MySQL, pero els gràfics els va a buscar al servidor de gràfics d'aquell node, o sigui, al server $SNPGraphServerId.&lt;br /&gt;
&lt;br /&gt;
= Manuales =&lt;br /&gt;
* [[Manual instalación Servicio SNPServices 1]] (Debian/Ubuntu) método apt + configuración virtualhost apache&lt;br /&gt;
* [[Manual instalación Servicio SNPServices 2]] (Debian/Ubuntu) método dpkg&lt;br /&gt;
* [[Manual instalación Servicio SNPServices 3]] (Debian/Ubuntu) extendido&lt;br /&gt;
&lt;br /&gt;
= PMF =&lt;br /&gt;
* [[Regenerar los ficheros rrd]]&lt;br /&gt;
* tener en cuenta que al connectar un dispositivo por cable ponerlo en Lan o en la ubicacion que sea, sino puede que no grafique correctamente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Referencias =&lt;br /&gt;
*[http://www.guifi.net/proxy-debian manual debian de guifi.net]&lt;br /&gt;
*[http://asociacionjuvenilelcueto.info/node/156 manual de la associació Juvenil el Cueto (Rioja)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ca:Servidor_de_gràfiques]]&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas</id>
		<title>Servidor de gráficas</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas"/>
				<updated>2012-11-06T21:37:02Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: /* Manuales */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= Definicion = &lt;br /&gt;
El servidor de gráficas se baas en el servicio de GUIFI llamado SNPServices.&lt;br /&gt;
El servidor SNPServices, y para ser mas exactos cliente SNPServices es un servidor linux, con php, apache, mrtg y rrdtool, no&lt;br /&gt;
necesita nada mas.&lt;br /&gt;
Le llamamos cliente porque el servidor Master SNPServices es un servidor que nos enviará informacion a nuestro servidor cliente SNPServices.&lt;br /&gt;
Aqui tienes un esquema que te hará ver claro esta definicion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Definicion para expertos&lt;br /&gt;
El cliente SNPServices consulta al Master snpservices la lista de nodos a monitorear, recogida previamente del servidor web mediante CNML, se parsea la lista y formatea scripts mrtg y los&lt;br /&gt;
ejecuta (pings y trafico) para generar un rrd y con consultas http desde el servidor web, se ejecuta un php que convierte los .rrd en imagenes y las muestra.&lt;br /&gt;
&lt;br /&gt;
El servidor WEB de guifi.net conoce la url del servidor de graficas de la zona de un nodo, o sea, los SNPServices clientes de cada zona. La web muestra sus datos locales y los datos remotos.&lt;br /&gt;
&lt;br /&gt;
Definicion extendida&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 1'''.-Un nodo crea un servicio de servidor de gráficas en la web. Este servicio le concede un numero que le identifica. A este valor le llamamos '''$SNPGraphServerId''' &lt;br /&gt;
Aquest servidor de gràfics, s'instalara un servei Apache, php i els ervei SNPServices. La direccio web l'anomenarem com '''$SNPDataServer_url'''&lt;br /&gt;
&lt;br /&gt;
Este servicio puede ser ademas supernodo de una zona y por tanto tiene el código de la zona. A este valor el llamamos '''$rootZone'''&lt;br /&gt;
&lt;br /&gt;
'''Pas 2''',. Al crearse este nodo, se actualiza la BBDD de la web- Esta base de datos contiene toda la información de los nodos,servicios y demas de GUIFI.NET&lt;br /&gt;
&lt;br /&gt;
'''Pas 3 i 4''' Abans de continuar amb el treball que fa el servidor SNPServices client, el Master SNPServices ha de fer un treball.&lt;br /&gt;
El Master SNPServices consulta al servidor Web una lista de todos los nodos de una zona. Aquesta pregunta la fa amb el script php que es diu '''refresh_cnml.php.''' . El servidor web li torna una llista de nodes en format CNML que enmagatzema en un arxiu que es diu /var/lib/snpservices/data/guifi.cnml&lt;br /&gt;
&lt;br /&gt;
Mostro l'inici de l'arxiu guifi.cnml&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;cnml version=&amp;quot;0.1&amp;quot; server_id=&amp;quot;1&amp;quot; server_url=&amp;quot;http://guifi.net&amp;quot; generated=&amp;quot;20121105 1247&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Exactament l'arxiu que obre es aixi $SNPDataServer_url.&amp;quot;/guifi/cnml/&amp;quot;.$rootZone.&amp;quot;/detail&amp;quot;&lt;br /&gt;
&lt;br /&gt;
El servidor web torna un arxiu i el servidor SNPServices el guarda a /var/lib/snpservices/data/guifi.cnml&lt;br /&gt;
Aquest arxiu s'actualitza de tant en tant i es necessari fer-ho ja que els canvis a la web no es reflexarien en els serveis a monitoritzar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 5 i 6'''.-Tornem al nostre servidor client SNPServices que estem muntant.&lt;br /&gt;
&lt;br /&gt;
El servidor SNPServices te una direccio an on buscar l'arxiu cnml crear per el Master SNPServices&lt;br /&gt;
$MRTGConfigSource='$SNPDataServer_url.&amp;quot;/graphs/cnml2mrtgcsv.php?server&amp;quot;.='.$SNPGraphServerId;&lt;br /&gt;
&lt;br /&gt;
En aquesta direccio es descarrega la llista de nodes a monitoritzar i transforma el contingut en una arxiu que conte els nodes a monitotritzar i en un llenguatge que el pugui entendre el servei mrtg.&lt;br /&gt;
&lt;br /&gt;
Mostro l'inici de l'arxiu mrtg.cfg&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# PathAdd: /usr/local/rrdtool-1.2.12/bin&lt;br /&gt;
# LibAdd: /usr/local/rrdtool-1.2.12/lib/perl/5.8.8/i386-linux-thread-multi&lt;br /&gt;
HtmlDir: /var/lib/snpservices/rrimg/&lt;br /&gt;
ImageDir: /var/lib/snpservices/rrimg/ &lt;br /&gt;
LogDir: /var/lib/snpservices/rrdb/&lt;br /&gt;
LogFormat: rrdtool&lt;br /&gt;
ThreshDir: /var/lib/snpservices/rrdb/&lt;br /&gt;
Forks: 12&lt;br /&gt;
Title[11833_ping]: Temps del ping de Futbol-Remei-VicRd1 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per veure aquesta llista en format csv desde web la podem demanar aixi&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$SNPDataServer_url/snpservices/graphs/cnml2mrtgcsv.php?server=$SNPGraphServerId&lt;br /&gt;
&lt;br /&gt;
Jo ho faig amb aquests valors&lt;br /&gt;
http://192.168.1.44/snpservices/graphs/cnml2mrtgcsv.php?server=6833&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De pas, veurem si fins aqui funciona tot.&lt;br /&gt;
&lt;br /&gt;
El los del sistema a on ens diu els moviments d'aques proces esta a '''/var/log/snpservices/mrtgccfg.log'''&lt;br /&gt;
&lt;br /&gt;
Al instalar el serveis SNPServices , s'ens ha afegit un cron a &lt;br /&gt;
&lt;br /&gt;
Aquest cron (script que s'autoexecuta segons programació) esta aqui '''/etc/cron.d/snpservices'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
*/30 *  * * *   root    if [ -x /usr/bin/php ]; then env LANG=C /usr/bin/php /usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php &amp;gt;&amp;gt; /var/log/snpservices/mrtgccfg.log 2&amp;gt;&amp;amp;1; fi&lt;br /&gt;
*/5 *   * * *   root    if [ ! -x /var/lock/mrtg ]; then mkdir /var/lock/mrtg ; fi; if [ -x /usr/bin/mrtg ] &amp;amp;&amp;amp; [ -r /var/lib/snpservices/data/mrtg.cfg ]; then env LANG=C /usr/bin/mrtg /var/lib/snpservices/data/mrtg.cfg --lock-file /var/lock/mrtg/guifi_l &amp;gt;&amp;gt; /var/log/snpservices/mrtg.log 2&amp;gt;&amp;amp;1; fi&lt;br /&gt;
/usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquest ve a dir que mitjançant el script /usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php, consulti l'arxiu guifi.cnml abans descrit i transformi el contingut en un xml disponible per al servei mrtg. Ho enmagatzema en /var/lib/snpservices/data/mrtg.cfg&lt;br /&gt;
&lt;br /&gt;
Una vegada el nostre servidor SNPServices client te les dades dels nodes a monitoritzar, es qua s'executa el proces de recerca de dades al mon amb el sistema mrtg. Ho fa amb /usr/bin/mrtg /var/lib/snpservices/data/mrtg.cfg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 7''' El servei mrtg consulta les dades amb ping i els envia a rrdtood que fabrica el gràfic.&lt;br /&gt;
el log dels movimetns del servei mrtg estan a '''/var/log/snpservices/mrtgc.log'''&lt;br /&gt;
Les dades per fer el gràfic s'enmagatzemen en '''/var/lib/snpservices/rrdb'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 8''' Els clients que volen informació dels nodes, la busquen al servidor web, el servidor web busca les dades i les troba dins del seu MySQL, pero els gràfics els va a buscar al servidor de gràfics d'aquell node, o sigui, al server $SNPGraphServerId.&lt;br /&gt;
&lt;br /&gt;
= Manuales =&lt;br /&gt;
* [[Manual instalación Servicio SNPServices 1]] (Debian/Ubuntu) método apt + configuración virtualhost apache&lt;br /&gt;
* [[Manual instalación Servicio SNPServices 2]] (Debian/Ubuntu) método dpkg&lt;br /&gt;
* [[Manual instalación Servicio SNPServices 3]] (Debian/Ubuntu) extendido&lt;br /&gt;
&lt;br /&gt;
= PMF =&lt;br /&gt;
* [[Regenerar los ficheros rrd]]&lt;br /&gt;
* tener en cuenta que al connectar un dispositivo por cable ponerlo en Lan o en la ubicacion que sea, sino puede que no grafique correctamente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Referencias =&lt;br /&gt;
*[http://www.guifi.net/proxy-debian manual debian de guifi.net]&lt;br /&gt;
*[http://asociacionjuvenilelcueto.info/node/156 manual de la associació Juvenil el Cueto (Rioja)]&lt;br /&gt;
*[http:www3.uji.es/~vrubert/guifi_linux/graph.html]&lt;br /&gt;
&lt;br /&gt;
[[ca:Servidor_de_gràfiques]]&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas</id>
		<title>Servidor de gráficas</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas"/>
				<updated>2012-11-06T21:35:48Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: /* Como trabaja el cliente SNPServices */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= Definicion = &lt;br /&gt;
El servidor de gráficas se baas en el servicio de GUIFI llamado SNPServices.&lt;br /&gt;
El servidor SNPServices, y para ser mas exactos cliente SNPServices es un servidor linux, con php, apache, mrtg y rrdtool, no&lt;br /&gt;
necesita nada mas.&lt;br /&gt;
Le llamamos cliente porque el servidor Master SNPServices es un servidor que nos enviará informacion a nuestro servidor cliente SNPServices.&lt;br /&gt;
Aqui tienes un esquema que te hará ver claro esta definicion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Definicion para expertos&lt;br /&gt;
El cliente SNPServices consulta al Master snpservices la lista de nodos a monitorear, recogida previamente del servidor web mediante CNML, se parsea la lista y formatea scripts mrtg y los&lt;br /&gt;
ejecuta (pings y trafico) para generar un rrd y con consultas http desde el servidor web, se ejecuta un php que convierte los .rrd en imagenes y las muestra.&lt;br /&gt;
&lt;br /&gt;
El servidor WEB de guifi.net conoce la url del servidor de graficas de la zona de un nodo, o sea, los SNPServices clientes de cada zona. La web muestra sus datos locales y los datos remotos.&lt;br /&gt;
&lt;br /&gt;
Definicion extendida&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 1'''.-Un nodo crea un servicio de servidor de gráficas en la web. Este servicio le concede un numero que le identifica. A este valor le llamamos '''$SNPGraphServerId''' &lt;br /&gt;
Aquest servidor de gràfics, s'instalara un servei Apache, php i els ervei SNPServices. La direccio web l'anomenarem com '''$SNPDataServer_url'''&lt;br /&gt;
&lt;br /&gt;
Este servicio puede ser ademas supernodo de una zona y por tanto tiene el código de la zona. A este valor el llamamos '''$rootZone'''&lt;br /&gt;
&lt;br /&gt;
'''Pas 2''',. Al crearse este nodo, se actualiza la BBDD de la web- Esta base de datos contiene toda la información de los nodos,servicios y demas de GUIFI.NET&lt;br /&gt;
&lt;br /&gt;
'''Pas 3 i 4''' Abans de continuar amb el treball que fa el servidor SNPServices client, el Master SNPServices ha de fer un treball.&lt;br /&gt;
El Master SNPServices consulta al servidor Web una lista de todos los nodos de una zona. Aquesta pregunta la fa amb el script php que es diu '''refresh_cnml.php.''' . El servidor web li torna una llista de nodes en format CNML que enmagatzema en un arxiu que es diu /var/lib/snpservices/data/guifi.cnml&lt;br /&gt;
&lt;br /&gt;
Mostro l'inici de l'arxiu guifi.cnml&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;cnml version=&amp;quot;0.1&amp;quot; server_id=&amp;quot;1&amp;quot; server_url=&amp;quot;http://guifi.net&amp;quot; generated=&amp;quot;20121105 1247&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Exactament l'arxiu que obre es aixi $SNPDataServer_url.&amp;quot;/guifi/cnml/&amp;quot;.$rootZone.&amp;quot;/detail&amp;quot;&lt;br /&gt;
&lt;br /&gt;
El servidor web torna un arxiu i el servidor SNPServices el guarda a /var/lib/snpservices/data/guifi.cnml&lt;br /&gt;
Aquest arxiu s'actualitza de tant en tant i es necessari fer-ho ja que els canvis a la web no es reflexarien en els serveis a monitoritzar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 5 i 6'''.-Tornem al nostre servidor client SNPServices que estem muntant.&lt;br /&gt;
&lt;br /&gt;
El servidor SNPServices te una direccio an on buscar l'arxiu cnml crear per el Master SNPServices&lt;br /&gt;
$MRTGConfigSource='$SNPDataServer_url.&amp;quot;/graphs/cnml2mrtgcsv.php?server&amp;quot;.='.$SNPGraphServerId;&lt;br /&gt;
&lt;br /&gt;
En aquesta direccio es descarrega la llista de nodes a monitoritzar i transforma el contingut en una arxiu que conte els nodes a monitotritzar i en un llenguatge que el pugui entendre el servei mrtg.&lt;br /&gt;
&lt;br /&gt;
Mostro l'inici de l'arxiu mrtg.cfg&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# PathAdd: /usr/local/rrdtool-1.2.12/bin&lt;br /&gt;
# LibAdd: /usr/local/rrdtool-1.2.12/lib/perl/5.8.8/i386-linux-thread-multi&lt;br /&gt;
HtmlDir: /var/lib/snpservices/rrimg/&lt;br /&gt;
ImageDir: /var/lib/snpservices/rrimg/ &lt;br /&gt;
LogDir: /var/lib/snpservices/rrdb/&lt;br /&gt;
LogFormat: rrdtool&lt;br /&gt;
ThreshDir: /var/lib/snpservices/rrdb/&lt;br /&gt;
Forks: 12&lt;br /&gt;
Title[11833_ping]: Temps del ping de Futbol-Remei-VicRd1 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per veure aquesta llista en format csv desde web la podem demanar aixi&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$SNPDataServer_url/snpservices/graphs/cnml2mrtgcsv.php?server=$SNPGraphServerId&lt;br /&gt;
&lt;br /&gt;
Jo ho faig amb aquests valors&lt;br /&gt;
http://192.168.1.44/snpservices/graphs/cnml2mrtgcsv.php?server=6833&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De pas, veurem si fins aqui funciona tot.&lt;br /&gt;
&lt;br /&gt;
El los del sistema a on ens diu els moviments d'aques proces esta a '''/var/log/snpservices/mrtgccfg.log'''&lt;br /&gt;
&lt;br /&gt;
Al instalar el serveis SNPServices , s'ens ha afegit un cron a &lt;br /&gt;
&lt;br /&gt;
Aquest cron (script que s'autoexecuta segons programació) esta aqui '''/etc/cron.d/snpservices'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
*/30 *  * * *   root    if [ -x /usr/bin/php ]; then env LANG=C /usr/bin/php /usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php &amp;gt;&amp;gt; /var/log/snpservices/mrtgccfg.log 2&amp;gt;&amp;amp;1; fi&lt;br /&gt;
*/5 *   * * *   root    if [ ! -x /var/lock/mrtg ]; then mkdir /var/lock/mrtg ; fi; if [ -x /usr/bin/mrtg ] &amp;amp;&amp;amp; [ -r /var/lib/snpservices/data/mrtg.cfg ]; then env LANG=C /usr/bin/mrtg /var/lib/snpservices/data/mrtg.cfg --lock-file /var/lock/mrtg/guifi_l &amp;gt;&amp;gt; /var/log/snpservices/mrtg.log 2&amp;gt;&amp;amp;1; fi&lt;br /&gt;
/usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquest ve a dir que mitjançant el script /usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php, consulti l'arxiu guifi.cnml abans descrit i transformi el contingut en un xml disponible per al servei mrtg. Ho enmagatzema en /var/lib/snpservices/data/mrtg.cfg&lt;br /&gt;
&lt;br /&gt;
Una vegada el nostre servidor SNPServices client te les dades dels nodes a monitoritzar, es qua s'executa el proces de recerca de dades al mon amb el sistema mrtg. Ho fa amb /usr/bin/mrtg /var/lib/snpservices/data/mrtg.cfg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 7''' El servei mrtg consulta les dades amb ping i els envia a rrdtood que fabrica el gràfic.&lt;br /&gt;
el log dels movimetns del servei mrtg estan a '''/var/log/snpservices/mrtgc.log'''&lt;br /&gt;
Les dades per fer el gràfic s'enmagatzemen en '''/var/lib/snpservices/rrdb'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 8''' Els clients que volen informació dels nodes, la busquen al servidor web, el servidor web busca les dades i les troba dins del seu MySQL, pero els gràfics els va a buscar al servidor de gràfics d'aquell node, o sigui, al server $SNPGraphServerId.&lt;br /&gt;
&lt;br /&gt;
= Manuales =&lt;br /&gt;
* [[Servidor de gráficas 1]] (Debian/Ubuntu) método apt + configuración virtualhost apache&lt;br /&gt;
* [[Servidor de gráficas 2]] (Debian/Ubuntu) método dpkg&lt;br /&gt;
* [[Servidor de gráficas 3]] (Debian/Ubuntu) extendido&lt;br /&gt;
&lt;br /&gt;
= PMF =&lt;br /&gt;
* [[Regenerar los ficheros rrd]]&lt;br /&gt;
* tener en cuenta que al connectar un dispositivo por cable ponerlo en Lan o en la ubicacion que sea, sino puede que no grafique correctamente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Referencias =&lt;br /&gt;
*[http://www.guifi.net/proxy-debian manual debian de guifi.net]&lt;br /&gt;
*[http://asociacionjuvenilelcueto.info/node/156 manual de la associació Juvenil el Cueto (Rioja)]&lt;br /&gt;
*[http:www3.uji.es/~vrubert/guifi_linux/graph.html]&lt;br /&gt;
&lt;br /&gt;
[[ca:Servidor_de_gràfiques]]&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas</id>
		<title>Servidor de gráficas</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas"/>
				<updated>2012-11-06T21:32:02Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: Redefinir 8 pasos para ver como funciona servicio. Pendiente de crear gráfico y subirlo.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= Definicion = &lt;br /&gt;
El servidor de gráficas se baas en el servicio de GUIFI llamado SNPServices.&lt;br /&gt;
El servidor SNPServices, y para ser mas exactos cliente SNPServices es un servidor linux, con php, apache, mrtg y rrdtool, no&lt;br /&gt;
necesita nada mas.&lt;br /&gt;
Le llamamos cliente porque el servidor Master SNPServices es un servidor que nos enviará informacion a nuestro servidor cliente SNPServices.&lt;br /&gt;
Aqui tienes un esquema que te hará ver claro esta definicion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Definicion para expertos&lt;br /&gt;
El cliente SNPServices consulta al Master snpservices la lista de nodos a monitorear, recogida previamente del servidor web mediante CNML, se parsea la lista y formatea scripts mrtg y los&lt;br /&gt;
ejecuta (pings y trafico) para generar un rrd y con consultas http desde el servidor web, se ejecuta un php que convierte los .rrd en imagenes y las muestra.&lt;br /&gt;
&lt;br /&gt;
El servidor WEB de guifi.net conoce la url del servidor de graficas de la zona de un nodo, o sea, los SNPServices clientes de cada zona. La web muestra sus datos locales y los datos remotos.&lt;br /&gt;
&lt;br /&gt;
Definicion extendida&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 1'''.-Un nodo crea un servicio de servidor de gráficas en la web. Este servicio le concede un numero que le identifica. A este valor le llamamos '''$SNPGraphServerId''' &lt;br /&gt;
Aquest servidor de gràfics, s'instalara un servei Apache, php i els ervei SNPServices. La direccio web l'anomenarem com '''$SNPDataServer_url'''&lt;br /&gt;
&lt;br /&gt;
Este servicio puede ser ademas supernodo de una zona y por tanto tiene el código de la zona. A este valor el llamamos '''$rootZone'''&lt;br /&gt;
&lt;br /&gt;
'''Pas 2''',. Al crearse este nodo, se actualiza la BBDD de la web- Esta base de datos contiene toda la información de los nodos,servicios y demas de GUIFI.NET&lt;br /&gt;
&lt;br /&gt;
'''Pas 3 i 4''' Abans de continuar amb el treball que fa el servidor SNPServices client, el Master SNPServices ha de fer un treball.&lt;br /&gt;
El Master SNPServices consulta al servidor Web una lista de todos los nodos de una zona. Aquesta pregunta la fa amb el script php que es diu '''refresh_cnml.php.''' . El servidor web li torna una llista de nodes en format CNML que enmagatzema en un arxiu que es diu /var/lib/snpservices/data/guifi.cnml&lt;br /&gt;
&lt;br /&gt;
Mostro l'inici de l'arxiu guifi.cnml&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;cnml version=&amp;quot;0.1&amp;quot; server_id=&amp;quot;1&amp;quot; server_url=&amp;quot;http://guifi.net&amp;quot; generated=&amp;quot;20121105 1247&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Exactament l'arxiu que obre es aixi $SNPDataServer_url.&amp;quot;/guifi/cnml/&amp;quot;.$rootZone.&amp;quot;/detail&amp;quot;&lt;br /&gt;
&lt;br /&gt;
El servidor web torna un arxiu i el servidor SNPServices el guarda a /var/lib/snpservices/data/guifi.cnml&lt;br /&gt;
Aquest arxiu s'actualitza de tant en tant i es necessari fer-ho ja que els canvis a la web no es reflexarien en els serveis a monitoritzar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 5 i 6'''.-Tornem al nostre servidor client SNPServices que estem muntant.&lt;br /&gt;
&lt;br /&gt;
El servidor SNPServices te una direccio an on buscar l'arxiu cnml crear per el Master SNPServices&lt;br /&gt;
$MRTGConfigSource='$SNPDataServer_url.&amp;quot;/graphs/cnml2mrtgcsv.php?server&amp;quot;.='.$SNPGraphServerId;&lt;br /&gt;
&lt;br /&gt;
En aquesta direccio es descarrega la llista de nodes a monitoritzar i transforma el contingut en una arxiu que conte els nodes a monitotritzar i en un llenguatge que el pugui entendre el servei mrtg.&lt;br /&gt;
&lt;br /&gt;
Mostro l'inici de l'arxiu mrtg.cfg&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# PathAdd: /usr/local/rrdtool-1.2.12/bin&lt;br /&gt;
# LibAdd: /usr/local/rrdtool-1.2.12/lib/perl/5.8.8/i386-linux-thread-multi&lt;br /&gt;
HtmlDir: /var/lib/snpservices/rrimg/&lt;br /&gt;
ImageDir: /var/lib/snpservices/rrimg/ &lt;br /&gt;
LogDir: /var/lib/snpservices/rrdb/&lt;br /&gt;
LogFormat: rrdtool&lt;br /&gt;
ThreshDir: /var/lib/snpservices/rrdb/&lt;br /&gt;
Forks: 12&lt;br /&gt;
Title[11833_ping]: Temps del ping de Futbol-Remei-VicRd1 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per veure aquesta llista en format csv desde web la podem demanar aixi&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$SNPDataServer_url/snpservices/graphs/cnml2mrtgcsv.php?server=$SNPGraphServerId&lt;br /&gt;
&lt;br /&gt;
Jo ho faig amb aquests valors&lt;br /&gt;
http://192.168.1.44/snpservices/graphs/cnml2mrtgcsv.php?server=6833&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De pas, veurem si fins aqui funciona tot.&lt;br /&gt;
&lt;br /&gt;
El los del sistema a on ens diu els moviments d'aques proces esta a '''/var/log/snpservices/mrtgccfg.log'''&lt;br /&gt;
&lt;br /&gt;
Al instalar el serveis SNPServices , s'ens ha afegit un cron a &lt;br /&gt;
&lt;br /&gt;
Aquest cron (script que s'autoexecuta segons programació) esta aqui '''/etc/cron.d/snpservices'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
*/30 *  * * *   root    if [ -x /usr/bin/php ]; then env LANG=C /usr/bin/php /usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php &amp;gt;&amp;gt; /var/log/snpservices/mrtgccfg.log 2&amp;gt;&amp;amp;1; fi&lt;br /&gt;
*/5 *   * * *   root    if [ ! -x /var/lock/mrtg ]; then mkdir /var/lock/mrtg ; fi; if [ -x /usr/bin/mrtg ] &amp;amp;&amp;amp; [ -r /var/lib/snpservices/data/mrtg.cfg ]; then env LANG=C /usr/bin/mrtg /var/lib/snpservices/data/mrtg.cfg --lock-file /var/lock/mrtg/guifi_l &amp;gt;&amp;gt; /var/log/snpservices/mrtg.log 2&amp;gt;&amp;amp;1; fi&lt;br /&gt;
/usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquest ve a dir que mitjançant el script /usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php, consulti l'arxiu guifi.cnml abans descrit i transformi el contingut en un xml disponible per al servei mrtg. Ho enmagatzema en /var/lib/snpservices/data/mrtg.cfg&lt;br /&gt;
&lt;br /&gt;
Una vegada el nostre servidor SNPServices client te les dades dels nodes a monitoritzar, es qua s'executa el proces de recerca de dades al mon amb el sistema mrtg. Ho fa amb /usr/bin/mrtg /var/lib/snpservices/data/mrtg.cfg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 7''' El servei mrtg consulta les dades amb ping i els envia a rrdtood que fabrica el gràfic.&lt;br /&gt;
el log dels movimetns del servei mrtg estan a '''/var/log/snpservices/mrtgc.log'''&lt;br /&gt;
Les dades per fer el gràfic s'enmagatzemen en '''/var/lib/snpservices/rrdb'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 8''' Els clients que volen informació dels nodes, la busquen al servidor web, el servidor web busca les dades i les troba dins del seu MySQL, pero els gràfics els va a buscar al servidor de gràfics d'aquell node, o sigui, al server $SNPGraphServerId.&lt;br /&gt;
&lt;br /&gt;
= Manuales =&lt;br /&gt;
* [[Servidor de gráficas 1]] (Debian/Ubuntu) método apt + configuración virtualhost apache&lt;br /&gt;
* [[Servidor de gráficas 2]] (Debian/Ubuntu) método dpkg&lt;br /&gt;
* [[Servidor de gráficas 3]] (Debian/Ubuntu) extendido&lt;br /&gt;
&lt;br /&gt;
= Como trabaja el cliente SNPServices =&lt;br /&gt;
El cliente SNPServices tiene varios passos a realizar para poder recopilar datos y hacer un escaneo en las direcciones cercanas.&lt;br /&gt;
&lt;br /&gt;
La lista de nodos a buscar se hace mediante cnml2mrtgcsv.php&lt;br /&gt;
Cuando tiene esta lista hace un escaneo a los nodos&lt;br /&gt;
La información que ha de buscar en los nodos se hace mediante el archivo mrtgcsv2mrtgcfg.php&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
if (file_exists(&amp;quot;/var/www/guifi/snpservices/common/config.php&amp;quot;)) {&lt;br /&gt;
   include_once(&amp;quot;/var/www/guifi/snpservices/common/config.php&amp;quot;);&lt;br /&gt;
} else {&lt;br /&gt;
  include_once(&amp;quot;/var/www/guifi/snpservices/common/config.php.template&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$now = time();&lt;br /&gt;
$mlast= @fopen(&amp;quot;/tmp/last_mrtg&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
if ($mlast)&lt;br /&gt;
  $last = fgets($mlast);&lt;br /&gt;
else&lt;br /&gt;
  $last = 0;&lt;br /&gt;
print &amp;quot;Last: &amp;quot;.date('Y/m/d H:i:s',((int)$last)+(60*60)).&amp;quot;\n&amp;quot;;&lt;br /&gt;
print &amp;quot;Now: &amp;quot;.date('Y/m/d H:i:s',(int)$now).&amp;quot;\n&amp;quot;;&lt;br /&gt;
print &amp;quot;ServerId: &amp;quot;.$SNPGraphServerId.&amp;quot;\n&amp;quot;;&lt;br /&gt;
#&lt;br /&gt;
# Looks if the files has been refreshed at least between 60 an 90 mins ago&lt;br /&gt;
# range 60..90 depends on $SNPGraphServerId mod 30&lt;br /&gt;
# if is still fresh, does not even looks to the server to check if it has changed&lt;br /&gt;
#&lt;br /&gt;
$secs = $SNPGraphServerId % 285;&lt;br /&gt;
$mins = $SNPGraphServerId % 30;&lt;br /&gt;
$nanos = $SNPGraphServerId % 10;&lt;br /&gt;
if (($last) and ($now &amp;lt; ($last +  ((60 + $mins) * 60)))) {&lt;br /&gt;
  fclose($mlast);&lt;br /&gt;
  echo &amp;quot;Still fresh.\n&amp;quot;;&lt;br /&gt;
  exit();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Local file is not fresh, so looks to the server and cheks if has changed&lt;br /&gt;
#&lt;br /&gt;
$hlastnow = @fopen($SNPDataServer_url.&amp;quot;/guifi/cnml&amp;quot;, &amp;quot;r&amp;quot;) or die('Error reading changes\n');&lt;br /&gt;
$last_now = fgets($hlastnow);&lt;br /&gt;
fclose($hlastnow);&lt;br /&gt;
$hlast= @fopen(&amp;quot;/tmp/last_update.mrtg&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
if (($hlast) and ($last_now == fgets($hlast))) {&lt;br /&gt;
  fclose($hlast);&lt;br /&gt;
  echo &amp;quot;No changes.\n&amp;quot;;&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_mrtg&amp;quot;, &amp;quot;w+&amp;quot;) or die('Error!');&lt;br /&gt;
  fwrite($hlast,$now);&lt;br /&gt;
  fclose($hlast);&lt;br /&gt;
  exit();&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
print &amp;quot;Sever CNML dated as: &amp;quot;.date('Y/m/d H:i:s',$last_now).&amp;quot;\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Server CNML has changed, so going to call the server for the new file&lt;br /&gt;
# Befoge calling, sleep $SNPGrahServerId mod 285 (4 min, 45 segs) to spread across that&lt;br /&gt;
# timeslot.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;Waiting for  &amp;quot;.$secs.&amp;quot;.&amp;quot;.$nanos.&amp;quot; seconds\n&amp;quot;;&lt;br /&gt;
time_nanosleep($secs,($nanos * 10000000));&lt;br /&gt;
print date('Y/m/d H:i:s').&amp;quot;\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$hf = @fopen($MRTGConfigSource,&amp;quot;r&amp;quot;) or die('Error reading MRTG csv input\n&amp;quot;');&lt;br /&gt;
$cf = @fopen('../data/mrtg.cfg','w+');&lt;br /&gt;
&lt;br /&gt;
fputs($cf,sprintf($rrdtool_header,$rrdimg_path,$rrdimg_path,$rrddb_path,$rrddb_path));&lt;br /&gt;
&lt;br /&gt;
while ( $buffer = fgets($hf, 4096) ) {&lt;br /&gt;
  $node_line_array = explode(&amp;quot;,&amp;quot;,$buffer);&lt;br /&gt;
  $line = $node_line_array[count($node_line_array) - 1];&lt;br /&gt;
  if ( substr($buffer,0,1) == '#' || $line == &amp;quot;Planned\n&amp;quot; || $line == &amp;quot;Dropped\n&amp;quot; || $line == &amp;quot;Building\n&amp;quot; || $line == &amp;quot;Reserved\n&amp;quot; )&lt;br /&gt;
          continue;&lt;br /&gt;
&lt;br /&gt;
  $buffer = str_replace(&amp;quot;\n&amp;quot;,&amp;quot;&amp;quot;,$buffer);&lt;br /&gt;
  $dev=explode(',',$buffer);&lt;br /&gt;
  if ( count($dev) != 5 ) {&lt;br /&gt;
                 $dev[0] = $dev[0];&lt;br /&gt;
                 $dev[1] = $dev[1];&lt;br /&gt;
                 $dev[2] = $dev[2];&lt;br /&gt;
                 $dev[3] = 'eth0;';&lt;br /&gt;
                 $dev[4] = $dev[3];&lt;br /&gt;
  }&lt;br /&gt;
 fputs($cf,sprintf($mrtg_ping_template,&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[1],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[1],&lt;br /&gt;
                 $dev[1],&lt;br /&gt;
                 $dev[2],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[2],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0])&lt;br /&gt;
       );&lt;br /&gt;
  $t = explode('|',$dev[3]);&lt;br /&gt;
&lt;br /&gt;
  foreach ($t as $k=&amp;gt;$r)  {&lt;br /&gt;
    // is the snmp Index given??&lt;br /&gt;
    if (is_numeric($r)) {&lt;br /&gt;
      $rn = $dev[0].'-'.$r;&lt;br /&gt;
      $trap = $r;&lt;br /&gt;
      $wn = 'wLan';&lt;br /&gt;
    } // end if numeric snmp Index&lt;br /&gt;
    else {&lt;br /&gt;
      $rn = $dev[0].'-'.$k;&lt;br /&gt;
      // snmp is given by interface name&lt;br /&gt;
      $d = explode(';',$r);&lt;br /&gt;
      $wn = $d[1];&lt;br /&gt;
      $trap = '\\'.$d[0];&lt;br /&gt;
    }&lt;br /&gt;
    fputs($cf,sprintf($mrtg_traffic_template.&amp;quot;\n&amp;quot;,&lt;br /&gt;
                   $rn,&lt;br /&gt;
                   $trap,&lt;br /&gt;
                   $dev[2],&lt;br /&gt;
                   $rn,&lt;br /&gt;
                   $dev[2],&lt;br /&gt;
                   $dev[1],&lt;br /&gt;
                   $rn, $rn,&lt;br /&gt;
                   $wn,&lt;br /&gt;
                   $dev[1],&lt;br /&gt;
                   $rn,&lt;br /&gt;
                   $wn,&lt;br /&gt;
                   $dev[1],&lt;br /&gt;
                   $dev[1],&lt;br /&gt;
                   $wn)&lt;br /&gt;
         );&lt;br /&gt;
&lt;br /&gt;
  } // foreach interface&lt;br /&gt;
}&lt;br /&gt;
fclose($hf);&lt;br /&gt;
fclose($cf);&lt;br /&gt;
&lt;br /&gt;
$hlast= @fopen(&amp;quot;/tmp/last_update.mrtg&amp;quot;, &amp;quot;w+&amp;quot;) or die('Error!');&lt;br /&gt;
fwrite($hlast,$last_now);&lt;br /&gt;
fclose($hlast);&lt;br /&gt;
$hlast= @fopen(&amp;quot;/tmp/last_mrtg&amp;quot;, &amp;quot;w+&amp;quot;) or die('Error!');&lt;br /&gt;
fwrite($hlast,$now);&lt;br /&gt;
fclose($hlast);&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
este archivo es &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
  $rootZone = 52771;&lt;br /&gt;
#3671;&lt;br /&gt;
&lt;br /&gt;
  $minX = 999;&lt;br /&gt;
  $minY = 999;&lt;br /&gt;
  $maxX = -999;&lt;br /&gt;
  $maxY = -999;&lt;br /&gt;
&lt;br /&gt;
  $members = array();&lt;br /&gt;
&lt;br /&gt;
  $hlastnow = @fopen(&amp;quot;http://guifi.net/guifi/refresh/maps&amp;quot;, &amp;quot;r&amp;quot;) or die('Error reading changes\n');&lt;br /&gt;
  $last_now = fgets($hlastnow);&lt;br /&gt;
  fclose($hlastnow);&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_update.cnml&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
  if (($hlast) and ($last_now == fgets($hlast))) {&lt;br /&gt;
    fclose($hlast);&lt;br /&gt;
    echo &amp;quot;No changes.\n&amp;quot;;&lt;br /&gt;
    exit();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  echo &amp;quot;Getting CNML file\n&amp;quot;;&lt;br /&gt;
  $hcnml = @fopen(&amp;quot;http://guifi.net/guifi/cnml/&amp;quot;.$rootZone.&amp;quot;/detail&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
  $wcnml = @fopen(&amp;quot;guifi.cnml&amp;quot;, &amp;quot;w+&amp;quot;);&lt;br /&gt;
  while (!feof($hcnml)) {&lt;br /&gt;
       $buffer = fgets($hcnml, 4096);&lt;br /&gt;
       fwrite($wcnml,$buffer);&lt;br /&gt;
  }&lt;br /&gt;
  fclose($hcnml);&lt;br /&gt;
  fclose($wcnml);&lt;br /&gt;
&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_update.cnml&amp;quot;, &amp;quot;w+&amp;quot;) or die('Error!');&lt;br /&gt;
  fwrite($hlast,$last_now);&lt;br /&gt;
  fclose($hlast);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= PMF =&lt;br /&gt;
* [[Regenerar los ficheros rrd]]&lt;br /&gt;
* tener en cuenta que al connectar un dispositivo por cable ponerlo en Lan o en la ubicacion que sea, sino puede que no grafique correctamente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Referencias =&lt;br /&gt;
*[http://www.guifi.net/proxy-debian manual debian de guifi.net]&lt;br /&gt;
*[http://asociacionjuvenilelcueto.info/node/156 manual de la associació Juvenil el Cueto (Rioja)]&lt;br /&gt;
*[http:www3.uji.es/~vrubert/guifi_linux/graph.html]&lt;br /&gt;
&lt;br /&gt;
[[ca:Servidor_de_gràfiques]]&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas</id>
		<title>Servidor de gráficas</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas"/>
				<updated>2012-11-06T18:16:34Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= Definicion = &lt;br /&gt;
El servidor de gráficas se baas en el servicio de GUIFI llamado SNPServices.&lt;br /&gt;
El servidor SNPServices, y para ser mas exactos cliente SNPServices es un servidor linux, con php, apache, mrtg y rrdtool, no&lt;br /&gt;
necesita nada mas.&lt;br /&gt;
Le llamamos cliente porque el servidor Master SNPServices es un servidor que nos enviará informacion a nuestro servidor cliente SNPServices.&lt;br /&gt;
Aqui tienes un esquema que te hará ver claro esta definicion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Definicion para expertos&lt;br /&gt;
El cliente SNPServices consulta al Master snpservices la lista de nodos a monitorear, recogida previamente del servidor web mediante CNML, se parsea la lista y formatea scripts mrtg y los&lt;br /&gt;
ejecuta (pings y trafico) para generar un rrd y con consultas http desde el servidor web, se ejecuta un php que convierte los .rrd en imagenes y las muestra.&lt;br /&gt;
&lt;br /&gt;
El servidor WEB de guifi.net conoce la url del servidor de graficas de la zona de un nodo, o sea, los SNPServices clientes de cada zona. La web muestra sus datos locales y los datos remotos.&lt;br /&gt;
&lt;br /&gt;
Definicion extendida&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 1'''.-Un nodo crea un servicio de servidor de gráficas en la web. Este servicio le concede un numero que le identifica. A este valor le llamamos '''$SNPGraphServerId''' &lt;br /&gt;
Aquest servidor de gràfics, s'instalara un servei Apache, php i els ervei SNPServices. La direccio web l'anomenarem com '''$SNPDataServer_url'''&lt;br /&gt;
&lt;br /&gt;
Este servicio puede ser ademas supernodo de una zona y por tanto tiene el código de la zona. A este valor el llamamos '''$rootZone'''&lt;br /&gt;
&lt;br /&gt;
'''Pas 2''',. Al crearse este nodo, se actualiza la BBDD de la web- Esta base de datos contiene toda la información de los nodos,servicios y demas de GUIFI.NET&lt;br /&gt;
&lt;br /&gt;
'''Pas 3 i 4''' Abans de continuar amb el treball que fa el servidor SNPServices client, el Master SNPServices ha de fer un treball.&lt;br /&gt;
El Master SNPServices consulta al servidor Web una lista de todos los nodos de una zona. Aquesta pregunta la fa amb el script php que es diu '''refresh_cnml.php.''' . El servidor web li torna una llista de nodes en format CNML que enmagatzema en un arxiu que es diu /var/lib/snpservices/data/guifi.cnml&lt;br /&gt;
&lt;br /&gt;
Mostro l'inici de l'arxiu guifi.cnml&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;cnml version=&amp;quot;0.1&amp;quot; server_id=&amp;quot;1&amp;quot; server_url=&amp;quot;http://guifi.net&amp;quot; generated=&amp;quot;20121105 1247&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Exactament l'arxiu que obre es aixi $SNPDataServer_url.&amp;quot;/guifi/cnml/&amp;quot;.$rootZone.&amp;quot;/detail&amp;quot;&lt;br /&gt;
&lt;br /&gt;
El servidor web torna un arxiu i el servidor SNPServices el guarda a /var/lib/snpservices/data/guifi.cnml&lt;br /&gt;
Aquest arxiu s'actualitza de tant en tant i es necessari fer-ho ja que els canvis a la web no es reflexarien en els serveis a monitoritzar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 5 i 6'''.-Tornem al nostre servidor client SNPServices que estem muntant.&lt;br /&gt;
&lt;br /&gt;
El servidor SNPServices te una direccio an on buscar l'arxiu cnml crear per el Master SNPServices&lt;br /&gt;
$MRTGConfigSource='$SNPDataServer_url.&amp;quot;/graphs/cnml2mrtgcsv.php?server&amp;quot;.='.$SNPGraphServerId;&lt;br /&gt;
&lt;br /&gt;
En aquesta direccio es descarrega la llista de nodes a monitoritzar i transforma el contingut en una arxiu que conte els nodes a monitotritzar i en un llenguatge que el pugui entendre el servei mrtg.&lt;br /&gt;
&lt;br /&gt;
Mostro l'inici de l'arxiu mrtg.cfg&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# PathAdd: /usr/local/rrdtool-1.2.12/bin&lt;br /&gt;
# LibAdd: /usr/local/rrdtool-1.2.12/lib/perl/5.8.8/i386-linux-thread-multi&lt;br /&gt;
HtmlDir: /var/lib/snpservices/rrimg/&lt;br /&gt;
ImageDir: /var/lib/snpservices/rrimg/ &lt;br /&gt;
LogDir: /var/lib/snpservices/rrdb/&lt;br /&gt;
LogFormat: rrdtool&lt;br /&gt;
ThreshDir: /var/lib/snpservices/rrdb/&lt;br /&gt;
Forks: 12&lt;br /&gt;
Title[11833_ping]: Temps del ping de Futbol-Remei-VicRd1 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per veure aquesta llista en format csv desde web la podem demanar aixi&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$SNPDataServer_url/snpservices/graphs/cnml2mrtgcsv.php?server=$SNPGraphServerId&lt;br /&gt;
&lt;br /&gt;
Jo ho faig amb aquests valors&lt;br /&gt;
http://192.168.1.44/snpservices/graphs/cnml2mrtgcsv.php?server=6833&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De pas, veurem si fins aqui funciona tot.&lt;br /&gt;
&lt;br /&gt;
El los del sistema a on ens diu els moviments d'aques proces esta a '''/var/log/snpservices/mrtgccfg.log'''&lt;br /&gt;
&lt;br /&gt;
Al instalar el serveis SNPServices , s'ens ha afegit un cron a &lt;br /&gt;
&lt;br /&gt;
Aquest cron (script que s'autoexecuta segons programació) esta aqui '''/etc/cron.d/snpservices'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
*/30 *  * * *   root    if [ -x /usr/bin/php ]; then env LANG=C /usr/bin/php /usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php &amp;gt;&amp;gt; /var/log/snpservices/mrtgccfg.log 2&amp;gt;&amp;amp;1; fi&lt;br /&gt;
*/5 *   * * *   root    if [ ! -x /var/lock/mrtg ]; then mkdir /var/lock/mrtg ; fi; if [ -x /usr/bin/mrtg ] &amp;amp;&amp;amp; [ -r /var/lib/snpservices/data/mrtg.cfg ]; then env LANG=C /usr/bin/mrtg /var/lib/snpservices/data/mrtg.cfg --lock-file /var/lock/mrtg/guifi_l &amp;gt;&amp;gt; /var/log/snpservices/mrtg.log 2&amp;gt;&amp;amp;1; fi&lt;br /&gt;
/usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquest ve a dir que mitjançant el script /usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php, consulti l'arxiu guifi.cnml abans descrit i transformi el contingut en un xml disponible per al servei mrtg. Ho enmagatzema en /var/lib/snpservices/data/mrtg.cfg&lt;br /&gt;
&lt;br /&gt;
Una vegada el nostre servidor SNPServices client te les dades dels nodes a monitoritzar, es qua s'executa el proces de recerca de dades al mon amb el sistema mrtg. Ho fa amb /usr/bin/mrtg /var/lib/snpservices/data/mrtg.cfg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 7''' El servei mrtg consulta les dades amb ping i els envia a rrdtood que fabrica el gràfic.&lt;br /&gt;
el log dels movimetns del servei mrtg estan a '''/var/log/snpservices/mrtgc.log'''&lt;br /&gt;
&lt;br /&gt;
= Manuales =&lt;br /&gt;
* [[Servidor de gráficas 1]] (Debian/Ubuntu) método apt + configuración virtualhost apache&lt;br /&gt;
* [[Servidor de gráficas 2]] (Debian/Ubuntu) método dpkg&lt;br /&gt;
* [[Servidor de gráficas 3]] (Debian/Ubuntu) extendido&lt;br /&gt;
&lt;br /&gt;
= Como trabaja el cliente SNPServices =&lt;br /&gt;
El cliente SNPServices tiene varios passos a realizar para poder recopilar datos y hacer un escaneo en las direcciones cercanas.&lt;br /&gt;
&lt;br /&gt;
La lista de nodos a buscar se hace mediante cnml2mrtgcsv.php&lt;br /&gt;
Cuando tiene esta lista hace un escaneo a los nodos&lt;br /&gt;
La información que ha de buscar en los nodos se hace mediante el archivo mrtgcsv2mrtgcfg.php&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
if (file_exists(&amp;quot;/var/www/guifi/snpservices/common/config.php&amp;quot;)) {&lt;br /&gt;
   include_once(&amp;quot;/var/www/guifi/snpservices/common/config.php&amp;quot;);&lt;br /&gt;
} else {&lt;br /&gt;
  include_once(&amp;quot;/var/www/guifi/snpservices/common/config.php.template&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$now = time();&lt;br /&gt;
$mlast= @fopen(&amp;quot;/tmp/last_mrtg&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
if ($mlast)&lt;br /&gt;
  $last = fgets($mlast);&lt;br /&gt;
else&lt;br /&gt;
  $last = 0;&lt;br /&gt;
print &amp;quot;Last: &amp;quot;.date('Y/m/d H:i:s',((int)$last)+(60*60)).&amp;quot;\n&amp;quot;;&lt;br /&gt;
print &amp;quot;Now: &amp;quot;.date('Y/m/d H:i:s',(int)$now).&amp;quot;\n&amp;quot;;&lt;br /&gt;
print &amp;quot;ServerId: &amp;quot;.$SNPGraphServerId.&amp;quot;\n&amp;quot;;&lt;br /&gt;
#&lt;br /&gt;
# Looks if the files has been refreshed at least between 60 an 90 mins ago&lt;br /&gt;
# range 60..90 depends on $SNPGraphServerId mod 30&lt;br /&gt;
# if is still fresh, does not even looks to the server to check if it has changed&lt;br /&gt;
#&lt;br /&gt;
$secs = $SNPGraphServerId % 285;&lt;br /&gt;
$mins = $SNPGraphServerId % 30;&lt;br /&gt;
$nanos = $SNPGraphServerId % 10;&lt;br /&gt;
if (($last) and ($now &amp;lt; ($last +  ((60 + $mins) * 60)))) {&lt;br /&gt;
  fclose($mlast);&lt;br /&gt;
  echo &amp;quot;Still fresh.\n&amp;quot;;&lt;br /&gt;
  exit();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Local file is not fresh, so looks to the server and cheks if has changed&lt;br /&gt;
#&lt;br /&gt;
$hlastnow = @fopen($SNPDataServer_url.&amp;quot;/guifi/cnml&amp;quot;, &amp;quot;r&amp;quot;) or die('Error reading changes\n');&lt;br /&gt;
$last_now = fgets($hlastnow);&lt;br /&gt;
fclose($hlastnow);&lt;br /&gt;
$hlast= @fopen(&amp;quot;/tmp/last_update.mrtg&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
if (($hlast) and ($last_now == fgets($hlast))) {&lt;br /&gt;
  fclose($hlast);&lt;br /&gt;
  echo &amp;quot;No changes.\n&amp;quot;;&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_mrtg&amp;quot;, &amp;quot;w+&amp;quot;) or die('Error!');&lt;br /&gt;
  fwrite($hlast,$now);&lt;br /&gt;
  fclose($hlast);&lt;br /&gt;
  exit();&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
print &amp;quot;Sever CNML dated as: &amp;quot;.date('Y/m/d H:i:s',$last_now).&amp;quot;\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Server CNML has changed, so going to call the server for the new file&lt;br /&gt;
# Befoge calling, sleep $SNPGrahServerId mod 285 (4 min, 45 segs) to spread across that&lt;br /&gt;
# timeslot.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;Waiting for  &amp;quot;.$secs.&amp;quot;.&amp;quot;.$nanos.&amp;quot; seconds\n&amp;quot;;&lt;br /&gt;
time_nanosleep($secs,($nanos * 10000000));&lt;br /&gt;
print date('Y/m/d H:i:s').&amp;quot;\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$hf = @fopen($MRTGConfigSource,&amp;quot;r&amp;quot;) or die('Error reading MRTG csv input\n&amp;quot;');&lt;br /&gt;
$cf = @fopen('../data/mrtg.cfg','w+');&lt;br /&gt;
&lt;br /&gt;
fputs($cf,sprintf($rrdtool_header,$rrdimg_path,$rrdimg_path,$rrddb_path,$rrddb_path));&lt;br /&gt;
&lt;br /&gt;
while ( $buffer = fgets($hf, 4096) ) {&lt;br /&gt;
  $node_line_array = explode(&amp;quot;,&amp;quot;,$buffer);&lt;br /&gt;
  $line = $node_line_array[count($node_line_array) - 1];&lt;br /&gt;
  if ( substr($buffer,0,1) == '#' || $line == &amp;quot;Planned\n&amp;quot; || $line == &amp;quot;Dropped\n&amp;quot; || $line == &amp;quot;Building\n&amp;quot; || $line == &amp;quot;Reserved\n&amp;quot; )&lt;br /&gt;
          continue;&lt;br /&gt;
&lt;br /&gt;
  $buffer = str_replace(&amp;quot;\n&amp;quot;,&amp;quot;&amp;quot;,$buffer);&lt;br /&gt;
  $dev=explode(',',$buffer);&lt;br /&gt;
  if ( count($dev) != 5 ) {&lt;br /&gt;
                 $dev[0] = $dev[0];&lt;br /&gt;
                 $dev[1] = $dev[1];&lt;br /&gt;
                 $dev[2] = $dev[2];&lt;br /&gt;
                 $dev[3] = 'eth0;';&lt;br /&gt;
                 $dev[4] = $dev[3];&lt;br /&gt;
  }&lt;br /&gt;
 fputs($cf,sprintf($mrtg_ping_template,&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[1],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[1],&lt;br /&gt;
                 $dev[1],&lt;br /&gt;
                 $dev[2],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[2],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0])&lt;br /&gt;
       );&lt;br /&gt;
  $t = explode('|',$dev[3]);&lt;br /&gt;
&lt;br /&gt;
  foreach ($t as $k=&amp;gt;$r)  {&lt;br /&gt;
    // is the snmp Index given??&lt;br /&gt;
    if (is_numeric($r)) {&lt;br /&gt;
      $rn = $dev[0].'-'.$r;&lt;br /&gt;
      $trap = $r;&lt;br /&gt;
      $wn = 'wLan';&lt;br /&gt;
    } // end if numeric snmp Index&lt;br /&gt;
    else {&lt;br /&gt;
      $rn = $dev[0].'-'.$k;&lt;br /&gt;
      // snmp is given by interface name&lt;br /&gt;
      $d = explode(';',$r);&lt;br /&gt;
      $wn = $d[1];&lt;br /&gt;
      $trap = '\\'.$d[0];&lt;br /&gt;
    }&lt;br /&gt;
    fputs($cf,sprintf($mrtg_traffic_template.&amp;quot;\n&amp;quot;,&lt;br /&gt;
                   $rn,&lt;br /&gt;
                   $trap,&lt;br /&gt;
                   $dev[2],&lt;br /&gt;
                   $rn,&lt;br /&gt;
                   $dev[2],&lt;br /&gt;
                   $dev[1],&lt;br /&gt;
                   $rn, $rn,&lt;br /&gt;
                   $wn,&lt;br /&gt;
                   $dev[1],&lt;br /&gt;
                   $rn,&lt;br /&gt;
                   $wn,&lt;br /&gt;
                   $dev[1],&lt;br /&gt;
                   $dev[1],&lt;br /&gt;
                   $wn)&lt;br /&gt;
         );&lt;br /&gt;
&lt;br /&gt;
  } // foreach interface&lt;br /&gt;
}&lt;br /&gt;
fclose($hf);&lt;br /&gt;
fclose($cf);&lt;br /&gt;
&lt;br /&gt;
$hlast= @fopen(&amp;quot;/tmp/last_update.mrtg&amp;quot;, &amp;quot;w+&amp;quot;) or die('Error!');&lt;br /&gt;
fwrite($hlast,$last_now);&lt;br /&gt;
fclose($hlast);&lt;br /&gt;
$hlast= @fopen(&amp;quot;/tmp/last_mrtg&amp;quot;, &amp;quot;w+&amp;quot;) or die('Error!');&lt;br /&gt;
fwrite($hlast,$now);&lt;br /&gt;
fclose($hlast);&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
este archivo es &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
  $rootZone = 52771;&lt;br /&gt;
#3671;&lt;br /&gt;
&lt;br /&gt;
  $minX = 999;&lt;br /&gt;
  $minY = 999;&lt;br /&gt;
  $maxX = -999;&lt;br /&gt;
  $maxY = -999;&lt;br /&gt;
&lt;br /&gt;
  $members = array();&lt;br /&gt;
&lt;br /&gt;
  $hlastnow = @fopen(&amp;quot;http://guifi.net/guifi/refresh/maps&amp;quot;, &amp;quot;r&amp;quot;) or die('Error reading changes\n');&lt;br /&gt;
  $last_now = fgets($hlastnow);&lt;br /&gt;
  fclose($hlastnow);&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_update.cnml&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
  if (($hlast) and ($last_now == fgets($hlast))) {&lt;br /&gt;
    fclose($hlast);&lt;br /&gt;
    echo &amp;quot;No changes.\n&amp;quot;;&lt;br /&gt;
    exit();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  echo &amp;quot;Getting CNML file\n&amp;quot;;&lt;br /&gt;
  $hcnml = @fopen(&amp;quot;http://guifi.net/guifi/cnml/&amp;quot;.$rootZone.&amp;quot;/detail&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
  $wcnml = @fopen(&amp;quot;guifi.cnml&amp;quot;, &amp;quot;w+&amp;quot;);&lt;br /&gt;
  while (!feof($hcnml)) {&lt;br /&gt;
       $buffer = fgets($hcnml, 4096);&lt;br /&gt;
       fwrite($wcnml,$buffer);&lt;br /&gt;
  }&lt;br /&gt;
  fclose($hcnml);&lt;br /&gt;
  fclose($wcnml);&lt;br /&gt;
&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_update.cnml&amp;quot;, &amp;quot;w+&amp;quot;) or die('Error!');&lt;br /&gt;
  fwrite($hlast,$last_now);&lt;br /&gt;
  fclose($hlast);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= PMF =&lt;br /&gt;
* [[Regenerar los ficheros rrd]]&lt;br /&gt;
* tener en cuenta que al connectar un dispositivo por cable ponerlo en Lan o en la ubicacion que sea, sino puede que no grafique correctamente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Referencias =&lt;br /&gt;
*[http://www.guifi.net/proxy-debian manual debian de guifi.net]&lt;br /&gt;
*[http://asociacionjuvenilelcueto.info/node/156 manual de la associació Juvenil el Cueto (Rioja)]&lt;br /&gt;
*[http:www3.uji.es/~vrubert/guifi_linux/graph.html]&lt;br /&gt;
&lt;br /&gt;
[[ca:Servidor_de_gràfiques]]&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas</id>
		<title>Servidor de gráficas</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas"/>
				<updated>2012-11-06T10:04:35Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: /* Definicion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= Definicion = &lt;br /&gt;
El servidor de gráficas se baas en el servicio de GUIFI llamado SNPServices.&lt;br /&gt;
El servidor SNPServices, y para ser mas exactos cliente SNPServices es un servidor linux, con php, apache, mrtg y rrdtool, no&lt;br /&gt;
necesita nada mas.&lt;br /&gt;
Le llamamos cliente porque el servidor Master SNPServices es un servidor que nos enviará informacion a nuestro servidor cliente SNPServices.&lt;br /&gt;
Aqui tienes un esquema que te hará ver claro esta definicion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Definicion para expertos&lt;br /&gt;
El cliente SNPServices consulta al Master snpservices la lista de nodos a monitorear, recogida previamente del servidor web mediante CNML, se parsea la lista y formatea scripts mrtg y los&lt;br /&gt;
ejecuta (pings y trafico) para generar un rrd y con consultas http desde el servidor web, se ejecuta un php que convierte los .rrd en imagenes y las muestra.&lt;br /&gt;
&lt;br /&gt;
El servidor WEB de guifi.net conoce la url del servidor de graficas de la zona de un nodo, o sea, los SNPServices clientes de cada zona. La web muestra sus datos locales y los datos remotos.&lt;br /&gt;
&lt;br /&gt;
Definicion extendida&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 1'''.-Un nodo crea un servicio de servidor de gráficas en la web. Este servicio le concede un numero que le identifica. A este valor le llamamos '''$SNPGraphServerId''' &lt;br /&gt;
Aquest servidor de gràfics, s'instalara un servei Apache, php i els ervei SNPServices. La direccio web l'anomenarem com '''$SNPDataServer_url'''&lt;br /&gt;
&lt;br /&gt;
Este servicio puede ser ademas supernodo de una zona y por tanto tiene el código de la zona. A este valor el llamamos '''$rootZone'''&lt;br /&gt;
&lt;br /&gt;
'''Pas 2''',. Al crearse este nodo, se actualiza la BBDD de la web- Esta base de datos contiene toda la información de los nodos,servicios y demas de GUIFI.NET&lt;br /&gt;
&lt;br /&gt;
'''Pas 3 i 4''' Abans de continuar amb el treball que fa el servidor SNPServices client, el Master SNPServices ha de fer un treball.&lt;br /&gt;
El Master SNPServices consulta al servidor Web una lista de todos los nodos de una zona. Aquesta pregunta la fa amb el script php que es diu '''refresh_cnml.php.''' . El servidor web li torna una llista de nodes en format CNML que enmagatzema en un arxiu que es diu /var/lib/snpservices/data/guifi.cnml&lt;br /&gt;
&lt;br /&gt;
Mostro l'inici de l'arxiu guifi.cnml&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;cnml version=&amp;quot;0.1&amp;quot; server_id=&amp;quot;1&amp;quot; server_url=&amp;quot;http://guifi.net&amp;quot; generated=&amp;quot;20121105 1247&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Exactament l'arxiu que obre es aixi $SNPDataServer_url.&amp;quot;/guifi/cnml/&amp;quot;.$rootZone.&amp;quot;/detail&amp;quot;&lt;br /&gt;
&lt;br /&gt;
El servidor web torna un arxiu i el servidor SNPServices el guarda a /var/lib/snpservices/data/guifi.cnml&lt;br /&gt;
Aquest arxiu s'actualitza de tant en tant i es necessari fer-ho ja que els canvis a la web no es reflexarien en els serveis a monitoritzar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 5 i 6'''.-Tornem al nostre servidor client SNPServices que estem muntant.&lt;br /&gt;
&lt;br /&gt;
El servidor SNPServices te una direccio an on buscar l'arxiu cnml crear per el Master SNPServices&lt;br /&gt;
$MRTGConfigSource='$SNPDataServer_url.&amp;quot;/graphs/cnml2mrtgcsv.php?server&amp;quot;.='.$SNPGraphServerId;&lt;br /&gt;
&lt;br /&gt;
En aquesta direccio es descarrega la llista de nodes a monitoritzar i transforma el contingut en una arxiu que conte els nodes a monitotritzar i en un llenguatge que el pugui entendre el servei mrtg.&lt;br /&gt;
&lt;br /&gt;
Mostro l'inici de l'arxiu mrtg.cfg&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# PathAdd: /usr/local/rrdtool-1.2.12/bin&lt;br /&gt;
# LibAdd: /usr/local/rrdtool-1.2.12/lib/perl/5.8.8/i386-linux-thread-multi&lt;br /&gt;
HtmlDir: /var/lib/snpservices/rrimg/&lt;br /&gt;
ImageDir: /var/lib/snpservices/rrimg/ &lt;br /&gt;
LogDir: /var/lib/snpservices/rrdb/&lt;br /&gt;
LogFormat: rrdtool&lt;br /&gt;
ThreshDir: /var/lib/snpservices/rrdb/&lt;br /&gt;
Forks: 12&lt;br /&gt;
Title[11833_ping]: Temps del ping de Futbol-Remei-VicRd1 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per veure aquesta llista en format csv desde web la podem demanar aixi&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$SNPDataServer_url/snpservices/graphs/cnml2mrtgcsv.php?server=$SNPGraphServerId&lt;br /&gt;
&lt;br /&gt;
Jo ho faig amb aquests valors&lt;br /&gt;
http://192.168.1.44/snpservices/graphs/cnml2mrtgcsv.php?server=6833&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De pas, veurem si fins aqui funciona tot.&lt;br /&gt;
&lt;br /&gt;
El los del sistema a on ens diu els moviments d'aques proces esta a '''/var/log/snpservices/mrtgccfg.log'''&lt;br /&gt;
&lt;br /&gt;
Al instalar el serveis SNPServices , s'ens ha afegit un cron a &lt;br /&gt;
&lt;br /&gt;
Aquest cron (script que s'autoexecuta segons programació) esta aqui '''/etc/cron.d/snpservices'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
*/30 *  * * *   root    if [ -x /usr/bin/php ]; then env LANG=C /usr/bin/php /usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php &amp;gt;&amp;gt; /var/log/snpservices/mrtgccfg.log 2&amp;gt;&amp;amp;1; fi&lt;br /&gt;
*/5 *   * * *   root    if [ ! -x /var/lock/mrtg ]; then mkdir /var/lock/mrtg ; fi; if [ -x /usr/bin/mrtg ] &amp;amp;&amp;amp; [ -r /var/lib/snpservices/data/mrtg.cfg ]; then env LANG=C /usr/bin/mrtg /var/lib/snpservices/data/mrtg.cfg --lock-file /var/lock/mrtg/guifi_l &amp;gt;&amp;gt; /var/log/snpservices/mrtg.log 2&amp;gt;&amp;amp;1; fi&lt;br /&gt;
/usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquest ve a dir que mitjançant el script /usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php, consulti l'arxiu guifi.cnml abans descrit i transformi el contingut en un xml disponible per al servei mrtg. Ho enmagatzema en /var/lib/snpservices/data/mrtg.cfg&lt;br /&gt;
&lt;br /&gt;
Una vegada el nostre servidor SNPServices client te les dades dels nodes a monitoritzar, es qua s'executa el proces de recerca de dades al mon amb el sistema mrtg. Ho fa amb /usr/bin/mrtg /var/lib/snpservices/data/mrtg.cfg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 7''' El servei mrtg consulta les dades amb ping i els envia a rrdtood que fabrica el gràfic.&lt;br /&gt;
el log dels movimetns del servei mrtg estan a '''/var/log/snpservices/mrtgc.log'''&lt;br /&gt;
&lt;br /&gt;
= Manuales =&lt;br /&gt;
* [[Servidor de gráficas 1]] (Debian/Ubuntu) método apt + configuración virtualhost apache&lt;br /&gt;
* [[Servidor de gráficas 2]] (Debian/Ubuntu) método dpkg&lt;br /&gt;
* [[Servidor de gráficas 3]] (Debian/Ubuntu) extendido&lt;br /&gt;
&lt;br /&gt;
= Como trabaja el cliente SNPServices =&lt;br /&gt;
El cliente SNPServices tiene varios passos a realizar para poder recopilar datos y hacer un escaneo en las direcciones cercanas.&lt;br /&gt;
&lt;br /&gt;
La lista de nodos a buscar se hace mediante cnml2mrtgcsv.php&lt;br /&gt;
Cuando tiene esta lista hace un escaneo a los nodos&lt;br /&gt;
La información que ha de buscar en los nodos se hace mediante el archivo mrtgcsv2mrtgcfg.php&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
if (file_exists(&amp;quot;/var/www/guifi/snpservices/common/config.php&amp;quot;)) {&lt;br /&gt;
   include_once(&amp;quot;/var/www/guifi/snpservices/common/config.php&amp;quot;);&lt;br /&gt;
} else {&lt;br /&gt;
  include_once(&amp;quot;/var/www/guifi/snpservices/common/config.php.template&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$now = time();&lt;br /&gt;
$mlast= @fopen(&amp;quot;/tmp/last_mrtg&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
if ($mlast)&lt;br /&gt;
  $last = fgets($mlast);&lt;br /&gt;
else&lt;br /&gt;
  $last = 0;&lt;br /&gt;
print &amp;quot;Last: &amp;quot;.date('Y/m/d H:i:s',((int)$last)+(60*60)).&amp;quot;\n&amp;quot;;&lt;br /&gt;
print &amp;quot;Now: &amp;quot;.date('Y/m/d H:i:s',(int)$now).&amp;quot;\n&amp;quot;;&lt;br /&gt;
print &amp;quot;ServerId: &amp;quot;.$SNPGraphServerId.&amp;quot;\n&amp;quot;;&lt;br /&gt;
#&lt;br /&gt;
# Looks if the files has been refreshed at least between 60 an 90 mins ago&lt;br /&gt;
# range 60..90 depends on $SNPGraphServerId mod 30&lt;br /&gt;
# if is still fresh, does not even looks to the server to check if it has changed&lt;br /&gt;
#&lt;br /&gt;
$secs = $SNPGraphServerId % 285;&lt;br /&gt;
$mins = $SNPGraphServerId % 30;&lt;br /&gt;
$nanos = $SNPGraphServerId % 10;&lt;br /&gt;
if (($last) and ($now &amp;lt; ($last +  ((60 + $mins) * 60)))) {&lt;br /&gt;
  fclose($mlast);&lt;br /&gt;
  echo &amp;quot;Still fresh.\n&amp;quot;;&lt;br /&gt;
  exit();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Local file is not fresh, so looks to the server and cheks if has changed&lt;br /&gt;
#&lt;br /&gt;
$hlastnow = @fopen($SNPDataServer_url.&amp;quot;/guifi/cnml&amp;quot;, &amp;quot;r&amp;quot;) or die('Error reading changes\n');&lt;br /&gt;
$last_now = fgets($hlastnow);&lt;br /&gt;
fclose($hlastnow);&lt;br /&gt;
$hlast= @fopen(&amp;quot;/tmp/last_update.mrtg&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
if (($hlast) and ($last_now == fgets($hlast))) {&lt;br /&gt;
  fclose($hlast);&lt;br /&gt;
  echo &amp;quot;No changes.\n&amp;quot;;&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_mrtg&amp;quot;, &amp;quot;w+&amp;quot;) or die('Error!');&lt;br /&gt;
  fwrite($hlast,$now);&lt;br /&gt;
  fclose($hlast);&lt;br /&gt;
  exit();&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
print &amp;quot;Sever CNML dated as: &amp;quot;.date('Y/m/d H:i:s',$last_now).&amp;quot;\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Server CNML has changed, so going to call the server for the new file&lt;br /&gt;
# Befoge calling, sleep $SNPGrahServerId mod 285 (4 min, 45 segs) to spread across that&lt;br /&gt;
# timeslot.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;Waiting for  &amp;quot;.$secs.&amp;quot;.&amp;quot;.$nanos.&amp;quot; seconds\n&amp;quot;;&lt;br /&gt;
time_nanosleep($secs,($nanos * 10000000));&lt;br /&gt;
print date('Y/m/d H:i:s').&amp;quot;\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$hf = @fopen($MRTGConfigSource,&amp;quot;r&amp;quot;) or die('Error reading MRTG csv input\n&amp;quot;');&lt;br /&gt;
$cf = @fopen('../data/mrtg.cfg','w+');&lt;br /&gt;
&lt;br /&gt;
fputs($cf,sprintf($rrdtool_header,$rrdimg_path,$rrdimg_path,$rrddb_path,$rrddb_path));&lt;br /&gt;
&lt;br /&gt;
while ( $buffer = fgets($hf, 4096) ) {&lt;br /&gt;
  $node_line_array = explode(&amp;quot;,&amp;quot;,$buffer);&lt;br /&gt;
  $line = $node_line_array[count($node_line_array) - 1];&lt;br /&gt;
  if ( substr($buffer,0,1) == '#' || $line == &amp;quot;Planned\n&amp;quot; || $line == &amp;quot;Dropped\n&amp;quot; || $line == &amp;quot;Building\n&amp;quot; || $line == &amp;quot;Reserved\n&amp;quot; )&lt;br /&gt;
          continue;&lt;br /&gt;
&lt;br /&gt;
  $buffer = str_replace(&amp;quot;\n&amp;quot;,&amp;quot;&amp;quot;,$buffer);&lt;br /&gt;
  $dev=explode(',',$buffer);&lt;br /&gt;
  if ( count($dev) != 5 ) {&lt;br /&gt;
                 $dev[0] = $dev[0];&lt;br /&gt;
                 $dev[1] = $dev[1];&lt;br /&gt;
                 $dev[2] = $dev[2];&lt;br /&gt;
                 $dev[3] = 'eth0;';&lt;br /&gt;
                 $dev[4] = $dev[3];&lt;br /&gt;
  }&lt;br /&gt;
 fputs($cf,sprintf($mrtg_ping_template,&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[1],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[1],&lt;br /&gt;
                 $dev[1],&lt;br /&gt;
                 $dev[2],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[2],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0])&lt;br /&gt;
       );&lt;br /&gt;
  $t = explode('|',$dev[3]);&lt;br /&gt;
&lt;br /&gt;
  foreach ($t as $k=&amp;gt;$r)  {&lt;br /&gt;
    // is the snmp Index given??&lt;br /&gt;
    if (is_numeric($r)) {&lt;br /&gt;
      $rn = $dev[0].'-'.$r;&lt;br /&gt;
      $trap = $r;&lt;br /&gt;
      $wn = 'wLan';&lt;br /&gt;
    } // end if numeric snmp Index&lt;br /&gt;
    else {&lt;br /&gt;
      $rn = $dev[0].'-'.$k;&lt;br /&gt;
      // snmp is given by interface name&lt;br /&gt;
      $d = explode(';',$r);&lt;br /&gt;
      $wn = $d[1];&lt;br /&gt;
      $trap = '\\'.$d[0];&lt;br /&gt;
    }&lt;br /&gt;
    fputs($cf,sprintf($mrtg_traffic_template.&amp;quot;\n&amp;quot;,&lt;br /&gt;
                   $rn,&lt;br /&gt;
                   $trap,&lt;br /&gt;
                   $dev[2],&lt;br /&gt;
                   $rn,&lt;br /&gt;
                   $dev[2],&lt;br /&gt;
                   $dev[1],&lt;br /&gt;
                   $rn, $rn,&lt;br /&gt;
                   $wn,&lt;br /&gt;
                   $dev[1],&lt;br /&gt;
                   $rn,&lt;br /&gt;
                   $wn,&lt;br /&gt;
                   $dev[1],&lt;br /&gt;
                   $dev[1],&lt;br /&gt;
                   $wn)&lt;br /&gt;
         );&lt;br /&gt;
&lt;br /&gt;
  } // foreach interface&lt;br /&gt;
}&lt;br /&gt;
fclose($hf);&lt;br /&gt;
fclose($cf);&lt;br /&gt;
&lt;br /&gt;
$hlast= @fopen(&amp;quot;/tmp/last_update.mrtg&amp;quot;, &amp;quot;w+&amp;quot;) or die('Error!');&lt;br /&gt;
fwrite($hlast,$last_now);&lt;br /&gt;
fclose($hlast);&lt;br /&gt;
$hlast= @fopen(&amp;quot;/tmp/last_mrtg&amp;quot;, &amp;quot;w+&amp;quot;) or die('Error!');&lt;br /&gt;
fwrite($hlast,$now);&lt;br /&gt;
fclose($hlast);&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
este archivo es &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
  $rootZone = 52771;&lt;br /&gt;
#3671;&lt;br /&gt;
&lt;br /&gt;
  $minX = 999;&lt;br /&gt;
  $minY = 999;&lt;br /&gt;
  $maxX = -999;&lt;br /&gt;
  $maxY = -999;&lt;br /&gt;
&lt;br /&gt;
  $members = array();&lt;br /&gt;
&lt;br /&gt;
  $hlastnow = @fopen(&amp;quot;http://guifi.net/guifi/refresh/maps&amp;quot;, &amp;quot;r&amp;quot;) or die('Error reading changes\n');&lt;br /&gt;
  $last_now = fgets($hlastnow);&lt;br /&gt;
  fclose($hlastnow);&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_update.cnml&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
  if (($hlast) and ($last_now == fgets($hlast))) {&lt;br /&gt;
    fclose($hlast);&lt;br /&gt;
    echo &amp;quot;No changes.\n&amp;quot;;&lt;br /&gt;
    exit();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  echo &amp;quot;Getting CNML file\n&amp;quot;;&lt;br /&gt;
  $hcnml = @fopen(&amp;quot;http://guifi.net/guifi/cnml/&amp;quot;.$rootZone.&amp;quot;/detail&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
  $wcnml = @fopen(&amp;quot;guifi.cnml&amp;quot;, &amp;quot;w+&amp;quot;);&lt;br /&gt;
  while (!feof($hcnml)) {&lt;br /&gt;
       $buffer = fgets($hcnml, 4096);&lt;br /&gt;
       fwrite($wcnml,$buffer);&lt;br /&gt;
  }&lt;br /&gt;
  fclose($hcnml);&lt;br /&gt;
  fclose($wcnml);&lt;br /&gt;
&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_update.cnml&amp;quot;, &amp;quot;w+&amp;quot;) or die('Error!');&lt;br /&gt;
  fwrite($hlast,$last_now);&lt;br /&gt;
  fclose($hlast);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= PMF =&lt;br /&gt;
* [[Regenerar los ficheros rrd]]&lt;br /&gt;
* tener en cuenta que al connectar un dispositivo por cable ponerlo en Lan o en la ubicacion que sea, sino puede que no grafique correctamente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Referencias =&lt;br /&gt;
*[http://www.guifi.net/proxy-debian manual debian de guifi.net]&lt;br /&gt;
*[http://asociacionjuvenilelcueto.info/node/156 manual de la associació Juvenil el Cueto (Rioja)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ca:Servidor_de_gràfiques]]&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas</id>
		<title>Servidor de gráficas</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas"/>
				<updated>2012-11-06T09:55:46Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: /* Definicion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= Definicion = &lt;br /&gt;
El servidor de gráficas se baas en el servicio de GUIFI llamado SNPServices.&lt;br /&gt;
El servidor SNPServices, y para ser mas exactos cliente SNPServices es un servidor linux, con php, apache, mrtg y rrdtool, no&lt;br /&gt;
necesita nada mas.&lt;br /&gt;
Le llamamos cliente porque el servidor Master SNPServices es un servidor que nos enviará informacion a nuestro servidor cliente SNPServices.&lt;br /&gt;
Aqui tienes un esquema que te hará ver claro esta definicion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Definicion para expertos&lt;br /&gt;
El cliente SNPServices consulta al Master snpservices la lista de nodos a monitorear, recogida previamente del servidor web mediante CNML, se parsea la lista y formatea scripts mrtg y los&lt;br /&gt;
ejecuta (pings y trafico) para generar un rrd y con consultas http desde el servidor web, se ejecuta un php que convierte los .rrd en imagenes y las muestra.&lt;br /&gt;
&lt;br /&gt;
El servidor WEB de guifi.net conoce la url del servidor de graficas de la zona de un nodo, o sea, los SNPServices clientes de cada zona. La web muestra sus datos locales y los datos remotos.&lt;br /&gt;
&lt;br /&gt;
Definicion extendida&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 1'''.-Un nodo crea un servicio de servidor de gráficas en la web. Este servicio le concede un numero que le identifica. A este valor le llamamos '''$SNPGraphServerId''' &lt;br /&gt;
Aquest servidor de gràfics, s'instalara un servei Apache, php i els ervei SNPServices. La direccio web l'anomenarem com '''$SNPDataServer_url'''&lt;br /&gt;
&lt;br /&gt;
Este servicio puede ser ademas supernodo de una zona y por tanto tiene el código de la zona. A este valor el llamamos '''$rootZone'''&lt;br /&gt;
&lt;br /&gt;
'''Pas 2''',. Al crearse este nodo, se actualiza la BBDD de la web- Esta base de datos contiene toda la información de los nodos,servicios y demas de GUIFI.NET&lt;br /&gt;
&lt;br /&gt;
'''Pas 3 i 4''' Abans de continuar amb el treball que fa el servidor SNPServices client, el Master SNPServices ha de fer un treball.&lt;br /&gt;
El Master SNPServices consulta al servidor Web una lista de todos los nodos de una zona. Aquesta pregunta la fa amb el script php que es diu '''refresh_cnml.php.''' . El servidor web li torna una llista de nodes en format CNML que enmagatzema en un arxiu que es diu /var/lib/snpservices/data/guifi.cnml&lt;br /&gt;
&lt;br /&gt;
Mostro l'inici de l'arxiu guifi.cnml&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;cnml version=&amp;quot;0.1&amp;quot; server_id=&amp;quot;1&amp;quot; server_url=&amp;quot;http://guifi.net&amp;quot; generated=&amp;quot;20121105 1247&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Exactament l'arxiu que obre es aixi $SNPDataServer_url.&amp;quot;/guifi/cnml/&amp;quot;.$rootZone.&amp;quot;/detail&amp;quot;&lt;br /&gt;
&lt;br /&gt;
El servidor web torna un arxiu i el servidor SNPServices el guarda a /var/lib/snpservices/data/guifi.cnml&lt;br /&gt;
Aquest arxiu s'actualitza de tant en tant i es necessari fer-ho ja que els canvis a la web no es reflexarien en els serveis a monitoritzar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 5 i 6'''.-Tornem al nostre servidor client SNPServices que estem muntant.&lt;br /&gt;
&lt;br /&gt;
El servidor SNPServices te una direccio an on buscar l'arxiu cnml crear per el Master SNPServices&lt;br /&gt;
$MRTGConfigSource='$SNPDataServer_url.&amp;quot;/graphs/cnml2mrtgcsv.php?server&amp;quot;.='.$SNPGraphServerId;&lt;br /&gt;
&lt;br /&gt;
En aquesta direccio es descarrega la llista de nodes a monitoritzar i transforma el contingut en una arxiu que conte els nodes a monitotritzar i en un llenguatge que el pugui entendre el servei mrtg.&lt;br /&gt;
&lt;br /&gt;
Mostro l'inici de l'arxiu mrtg.cfg&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# PathAdd: /usr/local/rrdtool-1.2.12/bin&lt;br /&gt;
# LibAdd: /usr/local/rrdtool-1.2.12/lib/perl/5.8.8/i386-linux-thread-multi&lt;br /&gt;
HtmlDir: /var/lib/snpservices/rrimg/&lt;br /&gt;
ImageDir: /var/lib/snpservices/rrimg/ &lt;br /&gt;
LogDir: /var/lib/snpservices/rrdb/&lt;br /&gt;
LogFormat: rrdtool&lt;br /&gt;
ThreshDir: /var/lib/snpservices/rrdb/&lt;br /&gt;
Forks: 12&lt;br /&gt;
Title[11833_ping]: Temps del ping de Futbol-Remei-VicRd1 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per veure aquesta llista en format csv desde web la podem demanar aixi&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$SNPDataServer_url/snpservices/graphs/cnml2mrtgcsv.php?server=$SNPGraphServerId&lt;br /&gt;
&lt;br /&gt;
Jo ho faig amb aqeusts valors&lt;br /&gt;
http://192.168.1.44/snpservices/graphs/cnml2mrtgcsv.php?server=6833&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De pas, veurem si fins aqui funciona tot.&lt;br /&gt;
&lt;br /&gt;
Al instalar el serveis SNPServices , s'ens ha afegit un cron a &lt;br /&gt;
&lt;br /&gt;
Aquest cron (script que s'autoexecuta segons programació) esta aqui '''/etc/cron.d/snpservices'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
*/30 *  * * *   root    if [ -x /usr/bin/php ]; then env LANG=C /usr/bin/php /usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php &amp;gt;&amp;gt; /var/log/snpservices/mrtgccfg.log 2&amp;gt;&amp;amp;1; fi&lt;br /&gt;
*/5 *   * * *   root    if [ ! -x /var/lock/mrtg ]; then mkdir /var/lock/mrtg ; fi; if [ -x /usr/bin/mrtg ] &amp;amp;&amp;amp; [ -r /var/lib/snpservices/data/mrtg.cfg ]; then env LANG=C /usr/bin/mrtg /var/lib/snpservices/data/mrtg.cfg --lock-file /var/lock/mrtg/guifi_l &amp;gt;&amp;gt; /var/log/snpservices/mrtg.log 2&amp;gt;&amp;amp;1; fi&lt;br /&gt;
/usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquest ve a dir que mitjançant el script /usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php, consulti l'arxiu guifi.cnml abans descrit i transformi el contingut en un xml disponible per al servei mrtg. Ho enmagatzema en /var/lib/snpservices/data/mrtg.cfg&lt;br /&gt;
&lt;br /&gt;
Una vegada el nostre servidor SNPServices client te les dades dels nodes a monitoritzar, es qua s'executa el proces de recerca de dades al mon amb el sistema mrtg. Ho fa amb /usr/bin/mrtg /var/lib/snpservices/data/mrtg.cfg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 7''' El servei mrtg&lt;br /&gt;
&lt;br /&gt;
= Manuales =&lt;br /&gt;
* [[Servidor de gráficas 1]] (Debian/Ubuntu) método apt + configuración virtualhost apache&lt;br /&gt;
* [[Servidor de gráficas 2]] (Debian/Ubuntu) método dpkg&lt;br /&gt;
* [[Servidor de gráficas 3]] (Debian/Ubuntu) extendido&lt;br /&gt;
&lt;br /&gt;
= Como trabaja el cliente SNPServices =&lt;br /&gt;
El cliente SNPServices tiene varios passos a realizar para poder recopilar datos y hacer un escaneo en las direcciones cercanas.&lt;br /&gt;
&lt;br /&gt;
La lista de nodos a buscar se hace mediante cnml2mrtgcsv.php&lt;br /&gt;
Cuando tiene esta lista hace un escaneo a los nodos&lt;br /&gt;
La información que ha de buscar en los nodos se hace mediante el archivo mrtgcsv2mrtgcfg.php&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
if (file_exists(&amp;quot;/var/www/guifi/snpservices/common/config.php&amp;quot;)) {&lt;br /&gt;
   include_once(&amp;quot;/var/www/guifi/snpservices/common/config.php&amp;quot;);&lt;br /&gt;
} else {&lt;br /&gt;
  include_once(&amp;quot;/var/www/guifi/snpservices/common/config.php.template&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$now = time();&lt;br /&gt;
$mlast= @fopen(&amp;quot;/tmp/last_mrtg&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
if ($mlast)&lt;br /&gt;
  $last = fgets($mlast);&lt;br /&gt;
else&lt;br /&gt;
  $last = 0;&lt;br /&gt;
print &amp;quot;Last: &amp;quot;.date('Y/m/d H:i:s',((int)$last)+(60*60)).&amp;quot;\n&amp;quot;;&lt;br /&gt;
print &amp;quot;Now: &amp;quot;.date('Y/m/d H:i:s',(int)$now).&amp;quot;\n&amp;quot;;&lt;br /&gt;
print &amp;quot;ServerId: &amp;quot;.$SNPGraphServerId.&amp;quot;\n&amp;quot;;&lt;br /&gt;
#&lt;br /&gt;
# Looks if the files has been refreshed at least between 60 an 90 mins ago&lt;br /&gt;
# range 60..90 depends on $SNPGraphServerId mod 30&lt;br /&gt;
# if is still fresh, does not even looks to the server to check if it has changed&lt;br /&gt;
#&lt;br /&gt;
$secs = $SNPGraphServerId % 285;&lt;br /&gt;
$mins = $SNPGraphServerId % 30;&lt;br /&gt;
$nanos = $SNPGraphServerId % 10;&lt;br /&gt;
if (($last) and ($now &amp;lt; ($last +  ((60 + $mins) * 60)))) {&lt;br /&gt;
  fclose($mlast);&lt;br /&gt;
  echo &amp;quot;Still fresh.\n&amp;quot;;&lt;br /&gt;
  exit();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Local file is not fresh, so looks to the server and cheks if has changed&lt;br /&gt;
#&lt;br /&gt;
$hlastnow = @fopen($SNPDataServer_url.&amp;quot;/guifi/cnml&amp;quot;, &amp;quot;r&amp;quot;) or die('Error reading changes\n');&lt;br /&gt;
$last_now = fgets($hlastnow);&lt;br /&gt;
fclose($hlastnow);&lt;br /&gt;
$hlast= @fopen(&amp;quot;/tmp/last_update.mrtg&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
if (($hlast) and ($last_now == fgets($hlast))) {&lt;br /&gt;
  fclose($hlast);&lt;br /&gt;
  echo &amp;quot;No changes.\n&amp;quot;;&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_mrtg&amp;quot;, &amp;quot;w+&amp;quot;) or die('Error!');&lt;br /&gt;
  fwrite($hlast,$now);&lt;br /&gt;
  fclose($hlast);&lt;br /&gt;
  exit();&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
print &amp;quot;Sever CNML dated as: &amp;quot;.date('Y/m/d H:i:s',$last_now).&amp;quot;\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Server CNML has changed, so going to call the server for the new file&lt;br /&gt;
# Befoge calling, sleep $SNPGrahServerId mod 285 (4 min, 45 segs) to spread across that&lt;br /&gt;
# timeslot.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;Waiting for  &amp;quot;.$secs.&amp;quot;.&amp;quot;.$nanos.&amp;quot; seconds\n&amp;quot;;&lt;br /&gt;
time_nanosleep($secs,($nanos * 10000000));&lt;br /&gt;
print date('Y/m/d H:i:s').&amp;quot;\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$hf = @fopen($MRTGConfigSource,&amp;quot;r&amp;quot;) or die('Error reading MRTG csv input\n&amp;quot;');&lt;br /&gt;
$cf = @fopen('../data/mrtg.cfg','w+');&lt;br /&gt;
&lt;br /&gt;
fputs($cf,sprintf($rrdtool_header,$rrdimg_path,$rrdimg_path,$rrddb_path,$rrddb_path));&lt;br /&gt;
&lt;br /&gt;
while ( $buffer = fgets($hf, 4096) ) {&lt;br /&gt;
  $node_line_array = explode(&amp;quot;,&amp;quot;,$buffer);&lt;br /&gt;
  $line = $node_line_array[count($node_line_array) - 1];&lt;br /&gt;
  if ( substr($buffer,0,1) == '#' || $line == &amp;quot;Planned\n&amp;quot; || $line == &amp;quot;Dropped\n&amp;quot; || $line == &amp;quot;Building\n&amp;quot; || $line == &amp;quot;Reserved\n&amp;quot; )&lt;br /&gt;
          continue;&lt;br /&gt;
&lt;br /&gt;
  $buffer = str_replace(&amp;quot;\n&amp;quot;,&amp;quot;&amp;quot;,$buffer);&lt;br /&gt;
  $dev=explode(',',$buffer);&lt;br /&gt;
  if ( count($dev) != 5 ) {&lt;br /&gt;
                 $dev[0] = $dev[0];&lt;br /&gt;
                 $dev[1] = $dev[1];&lt;br /&gt;
                 $dev[2] = $dev[2];&lt;br /&gt;
                 $dev[3] = 'eth0;';&lt;br /&gt;
                 $dev[4] = $dev[3];&lt;br /&gt;
  }&lt;br /&gt;
 fputs($cf,sprintf($mrtg_ping_template,&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[1],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[1],&lt;br /&gt;
                 $dev[1],&lt;br /&gt;
                 $dev[2],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[2],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0])&lt;br /&gt;
       );&lt;br /&gt;
  $t = explode('|',$dev[3]);&lt;br /&gt;
&lt;br /&gt;
  foreach ($t as $k=&amp;gt;$r)  {&lt;br /&gt;
    // is the snmp Index given??&lt;br /&gt;
    if (is_numeric($r)) {&lt;br /&gt;
      $rn = $dev[0].'-'.$r;&lt;br /&gt;
      $trap = $r;&lt;br /&gt;
      $wn = 'wLan';&lt;br /&gt;
    } // end if numeric snmp Index&lt;br /&gt;
    else {&lt;br /&gt;
      $rn = $dev[0].'-'.$k;&lt;br /&gt;
      // snmp is given by interface name&lt;br /&gt;
      $d = explode(';',$r);&lt;br /&gt;
      $wn = $d[1];&lt;br /&gt;
      $trap = '\\'.$d[0];&lt;br /&gt;
    }&lt;br /&gt;
    fputs($cf,sprintf($mrtg_traffic_template.&amp;quot;\n&amp;quot;,&lt;br /&gt;
                   $rn,&lt;br /&gt;
                   $trap,&lt;br /&gt;
                   $dev[2],&lt;br /&gt;
                   $rn,&lt;br /&gt;
                   $dev[2],&lt;br /&gt;
                   $dev[1],&lt;br /&gt;
                   $rn, $rn,&lt;br /&gt;
                   $wn,&lt;br /&gt;
                   $dev[1],&lt;br /&gt;
                   $rn,&lt;br /&gt;
                   $wn,&lt;br /&gt;
                   $dev[1],&lt;br /&gt;
                   $dev[1],&lt;br /&gt;
                   $wn)&lt;br /&gt;
         );&lt;br /&gt;
&lt;br /&gt;
  } // foreach interface&lt;br /&gt;
}&lt;br /&gt;
fclose($hf);&lt;br /&gt;
fclose($cf);&lt;br /&gt;
&lt;br /&gt;
$hlast= @fopen(&amp;quot;/tmp/last_update.mrtg&amp;quot;, &amp;quot;w+&amp;quot;) or die('Error!');&lt;br /&gt;
fwrite($hlast,$last_now);&lt;br /&gt;
fclose($hlast);&lt;br /&gt;
$hlast= @fopen(&amp;quot;/tmp/last_mrtg&amp;quot;, &amp;quot;w+&amp;quot;) or die('Error!');&lt;br /&gt;
fwrite($hlast,$now);&lt;br /&gt;
fclose($hlast);&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
este archivo es &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
  $rootZone = 52771;&lt;br /&gt;
#3671;&lt;br /&gt;
&lt;br /&gt;
  $minX = 999;&lt;br /&gt;
  $minY = 999;&lt;br /&gt;
  $maxX = -999;&lt;br /&gt;
  $maxY = -999;&lt;br /&gt;
&lt;br /&gt;
  $members = array();&lt;br /&gt;
&lt;br /&gt;
  $hlastnow = @fopen(&amp;quot;http://guifi.net/guifi/refresh/maps&amp;quot;, &amp;quot;r&amp;quot;) or die('Error reading changes\n');&lt;br /&gt;
  $last_now = fgets($hlastnow);&lt;br /&gt;
  fclose($hlastnow);&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_update.cnml&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
  if (($hlast) and ($last_now == fgets($hlast))) {&lt;br /&gt;
    fclose($hlast);&lt;br /&gt;
    echo &amp;quot;No changes.\n&amp;quot;;&lt;br /&gt;
    exit();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  echo &amp;quot;Getting CNML file\n&amp;quot;;&lt;br /&gt;
  $hcnml = @fopen(&amp;quot;http://guifi.net/guifi/cnml/&amp;quot;.$rootZone.&amp;quot;/detail&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
  $wcnml = @fopen(&amp;quot;guifi.cnml&amp;quot;, &amp;quot;w+&amp;quot;);&lt;br /&gt;
  while (!feof($hcnml)) {&lt;br /&gt;
       $buffer = fgets($hcnml, 4096);&lt;br /&gt;
       fwrite($wcnml,$buffer);&lt;br /&gt;
  }&lt;br /&gt;
  fclose($hcnml);&lt;br /&gt;
  fclose($wcnml);&lt;br /&gt;
&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_update.cnml&amp;quot;, &amp;quot;w+&amp;quot;) or die('Error!');&lt;br /&gt;
  fwrite($hlast,$last_now);&lt;br /&gt;
  fclose($hlast);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= PMF =&lt;br /&gt;
* [[Regenerar los ficheros rrd]]&lt;br /&gt;
* tener en cuenta que al connectar un dispositivo por cable ponerlo en Lan o en la ubicacion que sea, sino puede que no grafique correctamente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Referencias =&lt;br /&gt;
*[http://www.guifi.net/proxy-debian manual debian de guifi.net]&lt;br /&gt;
*[http://asociacionjuvenilelcueto.info/node/156 manual de la associació Juvenil el Cueto (Rioja)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ca:Servidor_de_gràfiques]]&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas</id>
		<title>Servidor de gráficas</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas"/>
				<updated>2012-11-06T09:52:19Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: /* Definicion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= Definicion = &lt;br /&gt;
El servidor de gráficas se baas en el servicio de GUIFI llamado SNPServices.&lt;br /&gt;
El servidor SNPServices, y para ser mas exactos cliente SNPServices es un servidor linux, con php, apache, mrtg y rrdtool, no&lt;br /&gt;
necesita nada mas.&lt;br /&gt;
Le llamamos cliente porque el servidor Master SNPServices es un servidor que nos enviará informacion a nuestro servidor cliente SNPServices.&lt;br /&gt;
Aqui tienes un esquema que te hará ver claro esta definicion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Definicion para expertos&lt;br /&gt;
El cliente SNPServices consulta al Master snpservices la lista de nodos a monitorear, recogida previamente del servidor web mediante CNML, se parsea la lista y formatea scripts mrtg y los&lt;br /&gt;
ejecuta (pings y trafico) para generar un rrd y con consultas http desde el servidor web, se ejecuta un php que convierte los .rrd en imagenes y las muestra.&lt;br /&gt;
&lt;br /&gt;
El servidor WEB de guifi.net conoce la url del servidor de graficas de la zona de un nodo, o sea, los SNPServices clientes de cada zona. La web muestra sus datos locales y los datos remotos.&lt;br /&gt;
&lt;br /&gt;
Definicion extendida&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 1'''.-Un nodo crea un servicio de servidor de gráficas en la web. Este servicio le concede un numero que le identifica. A este valor le llamamos '''$SNPGraphServerId''' &lt;br /&gt;
Aquest servidor de gràfics, s'instalara un servei Apache, php i els ervei SNPServices. La direccio web l'anomenarem com '''$SNPDataServer_url'''&lt;br /&gt;
&lt;br /&gt;
Este servicio puede ser ademas supernodo de una zona y por tanto tiene el código de la zona. A este valor el llamamos '''$rootZone'''&lt;br /&gt;
&lt;br /&gt;
'''Pas 2''',. Al crearse este nodo, se actualiza la BBDD de la web- Esta base de datos contiene toda la información de los nodos,servicios y demas de GUIFI.NET&lt;br /&gt;
&lt;br /&gt;
'''Pas 3 i 4''' Abans de continuar amb el treball que fa el servidor SNPServices client, el Master SNPServices ha de fer un treball.&lt;br /&gt;
El Master SNPServices consulta al servidor Web una lista de todos los nodos de una zona. Aquesta pregunta la fa amb el script php que es diu '''refresh_cnml.php.''' . El servidor web li torna una llista de nodes en format CNML que enmagatzema en un arxiu que es diu /var/lib/snpservices/data/guifi.cnml&lt;br /&gt;
&lt;br /&gt;
Mostro l'inici de l'arxiu guifi.cnml&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;cnml version=&amp;quot;0.1&amp;quot; server_id=&amp;quot;1&amp;quot; server_url=&amp;quot;http://guifi.net&amp;quot; generated=&amp;quot;20121105 1247&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Exactament l'arxiu que obre es aixi $SNPDataServer_url.&amp;quot;/guifi/cnml/&amp;quot;.$rootZone.&amp;quot;/detail&amp;quot;&lt;br /&gt;
&lt;br /&gt;
El servidor web torna un arxiu i el servidor SNPServices el guarda a /var/lib/snpservices/data/guifi.cnml&lt;br /&gt;
Aquest arxiu s'actualitza de tant en tant i es necessari fer-ho ja que els canvis a la web no es reflexarien en els serveis a monitoritzar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 5 i 6'''.-Tornem al nostre servidor client SNPServices que estem muntant.&lt;br /&gt;
&lt;br /&gt;
El servidor SNPServices te una direccio an on buscar l'arxiu cnml crear per el Master SNPServices&lt;br /&gt;
$MRTGConfigSource='$SNPDataServer_url.&amp;quot;/graphs/cnml2mrtgcsv.php?server&amp;quot;.='.$SNPGraphServerId;&lt;br /&gt;
&lt;br /&gt;
En aquesta direccio es descarrega la llista de nodes a monitoritzar i transforma el contingut en una arxiu que conte els nodes a monitotritzar i en un llenguatge que el pugui entendre el servei mrtg.&lt;br /&gt;
&lt;br /&gt;
Mostro l'inici de l'arxiu mrtg.cfg&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# PathAdd: /usr/local/rrdtool-1.2.12/bin&lt;br /&gt;
# LibAdd: /usr/local/rrdtool-1.2.12/lib/perl/5.8.8/i386-linux-thread-multi&lt;br /&gt;
HtmlDir: /var/lib/snpservices/rrimg/&lt;br /&gt;
ImageDir: /var/lib/snpservices/rrimg/ &lt;br /&gt;
LogDir: /var/lib/snpservices/rrdb/&lt;br /&gt;
LogFormat: rrdtool&lt;br /&gt;
ThreshDir: /var/lib/snpservices/rrdb/&lt;br /&gt;
Forks: 12&lt;br /&gt;
Title[11833_ping]: Temps del ping de Futbol-Remei-VicRd1 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Al instalar el serveis SNPServices , s'ens ha afegit un cron a &lt;br /&gt;
&lt;br /&gt;
Aquest cron (script que s'autoexecuta segons programació) esta aqui '''/etc/cron.d/snpservices'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
*/30 *  * * *   root    if [ -x /usr/bin/php ]; then env LANG=C /usr/bin/php /usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php &amp;gt;&amp;gt; /var/log/snpservices/mrtgccfg.log 2&amp;gt;&amp;amp;1; fi&lt;br /&gt;
*/5 *   * * *   root    if [ ! -x /var/lock/mrtg ]; then mkdir /var/lock/mrtg ; fi; if [ -x /usr/bin/mrtg ] &amp;amp;&amp;amp; [ -r /var/lib/snpservices/data/mrtg.cfg ]; then env LANG=C /usr/bin/mrtg /var/lib/snpservices/data/mrtg.cfg --lock-file /var/lock/mrtg/guifi_l &amp;gt;&amp;gt; /var/log/snpservices/mrtg.log 2&amp;gt;&amp;amp;1; fi&lt;br /&gt;
/usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquest ve a dir que mitjançant el script /usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php, consulti l'arxiu guifi.cnml abans descrit i transformi el contingut en un xml disponible per al servei mrtg. Ho enmagatzema en /var/lib/snpservices/data/mrtg.cfg&lt;br /&gt;
&lt;br /&gt;
Una vegada el nostre servidor SNPServices client te les dades dels nodes a monitoritzar, es qua s'executa el proces de recerca de dades al mon amb el sistema mrtg. Ho fa amb /usr/bin/mrtg /var/lib/snpservices/data/mrtg.cfg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 7''' El servei mrtg&lt;br /&gt;
&lt;br /&gt;
= Manuales =&lt;br /&gt;
* [[Servidor de gráficas 1]] (Debian/Ubuntu) método apt + configuración virtualhost apache&lt;br /&gt;
* [[Servidor de gráficas 2]] (Debian/Ubuntu) método dpkg&lt;br /&gt;
* [[Servidor de gráficas 3]] (Debian/Ubuntu) extendido&lt;br /&gt;
&lt;br /&gt;
= Como trabaja el cliente SNPServices =&lt;br /&gt;
El cliente SNPServices tiene varios passos a realizar para poder recopilar datos y hacer un escaneo en las direcciones cercanas.&lt;br /&gt;
&lt;br /&gt;
La lista de nodos a buscar se hace mediante cnml2mrtgcsv.php&lt;br /&gt;
Cuando tiene esta lista hace un escaneo a los nodos&lt;br /&gt;
La información que ha de buscar en los nodos se hace mediante el archivo mrtgcsv2mrtgcfg.php&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
if (file_exists(&amp;quot;/var/www/guifi/snpservices/common/config.php&amp;quot;)) {&lt;br /&gt;
   include_once(&amp;quot;/var/www/guifi/snpservices/common/config.php&amp;quot;);&lt;br /&gt;
} else {&lt;br /&gt;
  include_once(&amp;quot;/var/www/guifi/snpservices/common/config.php.template&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$now = time();&lt;br /&gt;
$mlast= @fopen(&amp;quot;/tmp/last_mrtg&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
if ($mlast)&lt;br /&gt;
  $last = fgets($mlast);&lt;br /&gt;
else&lt;br /&gt;
  $last = 0;&lt;br /&gt;
print &amp;quot;Last: &amp;quot;.date('Y/m/d H:i:s',((int)$last)+(60*60)).&amp;quot;\n&amp;quot;;&lt;br /&gt;
print &amp;quot;Now: &amp;quot;.date('Y/m/d H:i:s',(int)$now).&amp;quot;\n&amp;quot;;&lt;br /&gt;
print &amp;quot;ServerId: &amp;quot;.$SNPGraphServerId.&amp;quot;\n&amp;quot;;&lt;br /&gt;
#&lt;br /&gt;
# Looks if the files has been refreshed at least between 60 an 90 mins ago&lt;br /&gt;
# range 60..90 depends on $SNPGraphServerId mod 30&lt;br /&gt;
# if is still fresh, does not even looks to the server to check if it has changed&lt;br /&gt;
#&lt;br /&gt;
$secs = $SNPGraphServerId % 285;&lt;br /&gt;
$mins = $SNPGraphServerId % 30;&lt;br /&gt;
$nanos = $SNPGraphServerId % 10;&lt;br /&gt;
if (($last) and ($now &amp;lt; ($last +  ((60 + $mins) * 60)))) {&lt;br /&gt;
  fclose($mlast);&lt;br /&gt;
  echo &amp;quot;Still fresh.\n&amp;quot;;&lt;br /&gt;
  exit();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Local file is not fresh, so looks to the server and cheks if has changed&lt;br /&gt;
#&lt;br /&gt;
$hlastnow = @fopen($SNPDataServer_url.&amp;quot;/guifi/cnml&amp;quot;, &amp;quot;r&amp;quot;) or die('Error reading changes\n');&lt;br /&gt;
$last_now = fgets($hlastnow);&lt;br /&gt;
fclose($hlastnow);&lt;br /&gt;
$hlast= @fopen(&amp;quot;/tmp/last_update.mrtg&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
if (($hlast) and ($last_now == fgets($hlast))) {&lt;br /&gt;
  fclose($hlast);&lt;br /&gt;
  echo &amp;quot;No changes.\n&amp;quot;;&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_mrtg&amp;quot;, &amp;quot;w+&amp;quot;) or die('Error!');&lt;br /&gt;
  fwrite($hlast,$now);&lt;br /&gt;
  fclose($hlast);&lt;br /&gt;
  exit();&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
print &amp;quot;Sever CNML dated as: &amp;quot;.date('Y/m/d H:i:s',$last_now).&amp;quot;\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Server CNML has changed, so going to call the server for the new file&lt;br /&gt;
# Befoge calling, sleep $SNPGrahServerId mod 285 (4 min, 45 segs) to spread across that&lt;br /&gt;
# timeslot.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;Waiting for  &amp;quot;.$secs.&amp;quot;.&amp;quot;.$nanos.&amp;quot; seconds\n&amp;quot;;&lt;br /&gt;
time_nanosleep($secs,($nanos * 10000000));&lt;br /&gt;
print date('Y/m/d H:i:s').&amp;quot;\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$hf = @fopen($MRTGConfigSource,&amp;quot;r&amp;quot;) or die('Error reading MRTG csv input\n&amp;quot;');&lt;br /&gt;
$cf = @fopen('../data/mrtg.cfg','w+');&lt;br /&gt;
&lt;br /&gt;
fputs($cf,sprintf($rrdtool_header,$rrdimg_path,$rrdimg_path,$rrddb_path,$rrddb_path));&lt;br /&gt;
&lt;br /&gt;
while ( $buffer = fgets($hf, 4096) ) {&lt;br /&gt;
  $node_line_array = explode(&amp;quot;,&amp;quot;,$buffer);&lt;br /&gt;
  $line = $node_line_array[count($node_line_array) - 1];&lt;br /&gt;
  if ( substr($buffer,0,1) == '#' || $line == &amp;quot;Planned\n&amp;quot; || $line == &amp;quot;Dropped\n&amp;quot; || $line == &amp;quot;Building\n&amp;quot; || $line == &amp;quot;Reserved\n&amp;quot; )&lt;br /&gt;
          continue;&lt;br /&gt;
&lt;br /&gt;
  $buffer = str_replace(&amp;quot;\n&amp;quot;,&amp;quot;&amp;quot;,$buffer);&lt;br /&gt;
  $dev=explode(',',$buffer);&lt;br /&gt;
  if ( count($dev) != 5 ) {&lt;br /&gt;
                 $dev[0] = $dev[0];&lt;br /&gt;
                 $dev[1] = $dev[1];&lt;br /&gt;
                 $dev[2] = $dev[2];&lt;br /&gt;
                 $dev[3] = 'eth0;';&lt;br /&gt;
                 $dev[4] = $dev[3];&lt;br /&gt;
  }&lt;br /&gt;
 fputs($cf,sprintf($mrtg_ping_template,&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[1],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[1],&lt;br /&gt;
                 $dev[1],&lt;br /&gt;
                 $dev[2],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[2],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0])&lt;br /&gt;
       );&lt;br /&gt;
  $t = explode('|',$dev[3]);&lt;br /&gt;
&lt;br /&gt;
  foreach ($t as $k=&amp;gt;$r)  {&lt;br /&gt;
    // is the snmp Index given??&lt;br /&gt;
    if (is_numeric($r)) {&lt;br /&gt;
      $rn = $dev[0].'-'.$r;&lt;br /&gt;
      $trap = $r;&lt;br /&gt;
      $wn = 'wLan';&lt;br /&gt;
    } // end if numeric snmp Index&lt;br /&gt;
    else {&lt;br /&gt;
      $rn = $dev[0].'-'.$k;&lt;br /&gt;
      // snmp is given by interface name&lt;br /&gt;
      $d = explode(';',$r);&lt;br /&gt;
      $wn = $d[1];&lt;br /&gt;
      $trap = '\\'.$d[0];&lt;br /&gt;
    }&lt;br /&gt;
    fputs($cf,sprintf($mrtg_traffic_template.&amp;quot;\n&amp;quot;,&lt;br /&gt;
                   $rn,&lt;br /&gt;
                   $trap,&lt;br /&gt;
                   $dev[2],&lt;br /&gt;
                   $rn,&lt;br /&gt;
                   $dev[2],&lt;br /&gt;
                   $dev[1],&lt;br /&gt;
                   $rn, $rn,&lt;br /&gt;
                   $wn,&lt;br /&gt;
                   $dev[1],&lt;br /&gt;
                   $rn,&lt;br /&gt;
                   $wn,&lt;br /&gt;
                   $dev[1],&lt;br /&gt;
                   $dev[1],&lt;br /&gt;
                   $wn)&lt;br /&gt;
         );&lt;br /&gt;
&lt;br /&gt;
  } // foreach interface&lt;br /&gt;
}&lt;br /&gt;
fclose($hf);&lt;br /&gt;
fclose($cf);&lt;br /&gt;
&lt;br /&gt;
$hlast= @fopen(&amp;quot;/tmp/last_update.mrtg&amp;quot;, &amp;quot;w+&amp;quot;) or die('Error!');&lt;br /&gt;
fwrite($hlast,$last_now);&lt;br /&gt;
fclose($hlast);&lt;br /&gt;
$hlast= @fopen(&amp;quot;/tmp/last_mrtg&amp;quot;, &amp;quot;w+&amp;quot;) or die('Error!');&lt;br /&gt;
fwrite($hlast,$now);&lt;br /&gt;
fclose($hlast);&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
este archivo es &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
  $rootZone = 52771;&lt;br /&gt;
#3671;&lt;br /&gt;
&lt;br /&gt;
  $minX = 999;&lt;br /&gt;
  $minY = 999;&lt;br /&gt;
  $maxX = -999;&lt;br /&gt;
  $maxY = -999;&lt;br /&gt;
&lt;br /&gt;
  $members = array();&lt;br /&gt;
&lt;br /&gt;
  $hlastnow = @fopen(&amp;quot;http://guifi.net/guifi/refresh/maps&amp;quot;, &amp;quot;r&amp;quot;) or die('Error reading changes\n');&lt;br /&gt;
  $last_now = fgets($hlastnow);&lt;br /&gt;
  fclose($hlastnow);&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_update.cnml&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
  if (($hlast) and ($last_now == fgets($hlast))) {&lt;br /&gt;
    fclose($hlast);&lt;br /&gt;
    echo &amp;quot;No changes.\n&amp;quot;;&lt;br /&gt;
    exit();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  echo &amp;quot;Getting CNML file\n&amp;quot;;&lt;br /&gt;
  $hcnml = @fopen(&amp;quot;http://guifi.net/guifi/cnml/&amp;quot;.$rootZone.&amp;quot;/detail&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
  $wcnml = @fopen(&amp;quot;guifi.cnml&amp;quot;, &amp;quot;w+&amp;quot;);&lt;br /&gt;
  while (!feof($hcnml)) {&lt;br /&gt;
       $buffer = fgets($hcnml, 4096);&lt;br /&gt;
       fwrite($wcnml,$buffer);&lt;br /&gt;
  }&lt;br /&gt;
  fclose($hcnml);&lt;br /&gt;
  fclose($wcnml);&lt;br /&gt;
&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_update.cnml&amp;quot;, &amp;quot;w+&amp;quot;) or die('Error!');&lt;br /&gt;
  fwrite($hlast,$last_now);&lt;br /&gt;
  fclose($hlast);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= PMF =&lt;br /&gt;
* [[Regenerar los ficheros rrd]]&lt;br /&gt;
* tener en cuenta que al connectar un dispositivo por cable ponerlo en Lan o en la ubicacion que sea, sino puede que no grafique correctamente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Referencias =&lt;br /&gt;
*[http://www.guifi.net/proxy-debian manual debian de guifi.net]&lt;br /&gt;
*[http://asociacionjuvenilelcueto.info/node/156 manual de la associació Juvenil el Cueto (Rioja)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ca:Servidor_de_gràfiques]]&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas</id>
		<title>Servidor de gráficas</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas"/>
				<updated>2012-11-06T09:49:21Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: /* Definicion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= Definicion = &lt;br /&gt;
El servidor de gráficas se baas en el servicio de GUIFI llamado SNPServices.&lt;br /&gt;
El servidor SNPServices, y para ser mas exactos cliente SNPServices es un servidor linux, con php, apache, mrtg y rrdtool, no&lt;br /&gt;
necesita nada mas.&lt;br /&gt;
Le llamamos cliente porque el servidor Master SNPServices es un servidor que nos enviará informacion a nuestro servidor cliente SNPServices.&lt;br /&gt;
Aqui tienes un esquema que te hará ver claro esta definicion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Definicion para expertos&lt;br /&gt;
El cliente SNPServices consulta al Master snpservices la lista de nodos a monitorear, recogida previamente del servidor web mediante CNML, se parsea la lista y formatea scripts mrtg y los&lt;br /&gt;
ejecuta (pings y trafico) para generar un rrd y con consultas http desde el servidor web, se ejecuta un php que convierte los .rrd en imagenes y las muestra.&lt;br /&gt;
&lt;br /&gt;
El servidor WEB de guifi.net conoce la url del servidor de graficas de la zona de un nodo, o sea, los SNPServices clientes de cada zona. La web muestra sus datos locales y los datos remotos.&lt;br /&gt;
&lt;br /&gt;
Definicion extendida&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 1'''.-Un nodo crea un servicio de servidor de gráficas en la web. Este servicio le concede un numero que le identifica. A este valor le llamamos '''$SNPGraphServerId''' &lt;br /&gt;
Aquest servidor de gràfics, s'instalara un servei Apache, php i els ervei SNPServices. La direccio web l'anomenarem com '''$SNPDataServer_url'''&lt;br /&gt;
&lt;br /&gt;
Este servicio puede ser ademas supernodo de una zona y por tanto tiene el código de la zona. A este valor el llamamos '''$rootZone'''&lt;br /&gt;
&lt;br /&gt;
'''Pas 2''',. Al crearse este nodo, se actualiza la BBDD de la web- Esta base de datos contiene toda la información de los nodos,servicios y demas de GUIFI.NET&lt;br /&gt;
&lt;br /&gt;
'''Pas 3 i 4''' Abans de continuar amb el treball que fa el servidor SNPServices client, el Master SNPServices ha de fer un treball.&lt;br /&gt;
El Master SNPServices consulta al servidor Web una lista de todos los nodos de una zona. Aquesta pregunta la fa amb el script php que es diu '''refresh_cnml.php.''' . El servidor web li torna una llista de nodes en format CNML que enmagatzema en un arxiu que es diu /var/lib/snpservices/data/guifi.cnml&lt;br /&gt;
&lt;br /&gt;
$$&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
$$&amp;lt;cnml version=&amp;quot;0.1&amp;quot; server_id=&amp;quot;1&amp;quot; server_url=&amp;quot;http://guifi.net&amp;quot; generated=&amp;quot;20121105 1247&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Exactament l'arxiu que obre es aixi $SNPDataServer_url.&amp;quot;/guifi/cnml/&amp;quot;.$rootZone.&amp;quot;/detail&amp;quot;&lt;br /&gt;
&lt;br /&gt;
El servidor web torna un arxiu i el servidor SNPServices el guarda a /var/lib/snpservices/data/guifi.cnml&lt;br /&gt;
Aquest arxiu s'actualitza de tant en tant i es necessari fer-ho ja que els canvis a la web no es reflexarien en els serveis a monitoritzar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 5 i 6'''.-Tornem al nostre servidor client SNPSerevices que estem muntant.&lt;br /&gt;
&lt;br /&gt;
El servidor SNPServices te una direccio an on buscar l'arxiu cnml crear per el Master SNPServices&lt;br /&gt;
$MRTGConfigSource='$SNPDataServer_url.&amp;quot;/graphs/cnml2mrtgcsv.php?server&amp;quot;.='.$SNPGraphServerId;&lt;br /&gt;
&lt;br /&gt;
En aquesta direccio es descarrega la llista de nodes a monitoritzar i transforma el contingut en una arxiu que conte els nodes a monitotritzar i en un llenguatge que el pugui entendre el servei mrtg.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Al instalar el serveis SNPServices , s'ens ha afegit un cron a &lt;br /&gt;
&lt;br /&gt;
Aquest cron (script que s'autoexecuta segons programació) esta aqui '''/etc/cron.d/snpservices'''&lt;br /&gt;
&lt;br /&gt;
*/30 *  * * *   root    if [ -x /usr/bin/php ]; then env LANG=C /usr/bin/php /usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php &amp;gt;&amp;gt; /var/log/snpservices/mrtgccfg.log 2&amp;gt;&amp;amp;1; fi&lt;br /&gt;
*/5 *   * * *   root    if [ ! -x /var/lock/mrtg ]; then mkdir /var/lock/mrtg ; fi; if [ -x /usr/bin/mrtg ] &amp;amp;&amp;amp; [ -r /var/lib/snpservices/data/mrtg.cfg ]; then env LANG=C /usr/bin/mrtg /var/lib/snpservices/data/mrtg.cfg --lock-file /var/lock/mrtg/guifi_l &amp;gt;&amp;gt; /var/log/snpservices/mrtg.log 2&amp;gt;&amp;amp;1; fi&lt;br /&gt;
/usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php &lt;br /&gt;
&lt;br /&gt;
Aquest ve a dir que mitjançant el script /usr/share/snpservices/graphs/mrtgcsv2mrtgcfg.php, consulti l'arxiu guifi.cnml abans descrit i transformi el contingut en un xml disponible per al servei mrtg. Ho enmagatzema en /var/lib/snpservices/data/mrtg.cfg&lt;br /&gt;
&lt;br /&gt;
Una vegada el nostre servidor SNPServices client te les dades dels nodes a monitoritzar, es qua s'executa el proces de recerca de dades al mon amb el sistema mrtg. Ho fa amb /usr/bin/mrtg /var/lib/snpservices/data/mrtg.cfg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pas 7''' El servei mrtg&lt;br /&gt;
&lt;br /&gt;
= Manuales =&lt;br /&gt;
* [[Servidor de gráficas 1]] (Debian/Ubuntu) método apt + configuración virtualhost apache&lt;br /&gt;
* [[Servidor de gráficas 2]] (Debian/Ubuntu) método dpkg&lt;br /&gt;
* [[Servidor de gráficas 3]] (Debian/Ubuntu) extendido&lt;br /&gt;
&lt;br /&gt;
= Como trabaja el cliente SNPServices =&lt;br /&gt;
El cliente SNPServices tiene varios passos a realizar para poder recopilar datos y hacer un escaneo en las direcciones cercanas.&lt;br /&gt;
&lt;br /&gt;
La lista de nodos a buscar se hace mediante cnml2mrtgcsv.php&lt;br /&gt;
Cuando tiene esta lista hace un escaneo a los nodos&lt;br /&gt;
La información que ha de buscar en los nodos se hace mediante el archivo mrtgcsv2mrtgcfg.php&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
if (file_exists(&amp;quot;/var/www/guifi/snpservices/common/config.php&amp;quot;)) {&lt;br /&gt;
   include_once(&amp;quot;/var/www/guifi/snpservices/common/config.php&amp;quot;);&lt;br /&gt;
} else {&lt;br /&gt;
  include_once(&amp;quot;/var/www/guifi/snpservices/common/config.php.template&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$now = time();&lt;br /&gt;
$mlast= @fopen(&amp;quot;/tmp/last_mrtg&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
if ($mlast)&lt;br /&gt;
  $last = fgets($mlast);&lt;br /&gt;
else&lt;br /&gt;
  $last = 0;&lt;br /&gt;
print &amp;quot;Last: &amp;quot;.date('Y/m/d H:i:s',((int)$last)+(60*60)).&amp;quot;\n&amp;quot;;&lt;br /&gt;
print &amp;quot;Now: &amp;quot;.date('Y/m/d H:i:s',(int)$now).&amp;quot;\n&amp;quot;;&lt;br /&gt;
print &amp;quot;ServerId: &amp;quot;.$SNPGraphServerId.&amp;quot;\n&amp;quot;;&lt;br /&gt;
#&lt;br /&gt;
# Looks if the files has been refreshed at least between 60 an 90 mins ago&lt;br /&gt;
# range 60..90 depends on $SNPGraphServerId mod 30&lt;br /&gt;
# if is still fresh, does not even looks to the server to check if it has changed&lt;br /&gt;
#&lt;br /&gt;
$secs = $SNPGraphServerId % 285;&lt;br /&gt;
$mins = $SNPGraphServerId % 30;&lt;br /&gt;
$nanos = $SNPGraphServerId % 10;&lt;br /&gt;
if (($last) and ($now &amp;lt; ($last +  ((60 + $mins) * 60)))) {&lt;br /&gt;
  fclose($mlast);&lt;br /&gt;
  echo &amp;quot;Still fresh.\n&amp;quot;;&lt;br /&gt;
  exit();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Local file is not fresh, so looks to the server and cheks if has changed&lt;br /&gt;
#&lt;br /&gt;
$hlastnow = @fopen($SNPDataServer_url.&amp;quot;/guifi/cnml&amp;quot;, &amp;quot;r&amp;quot;) or die('Error reading changes\n');&lt;br /&gt;
$last_now = fgets($hlastnow);&lt;br /&gt;
fclose($hlastnow);&lt;br /&gt;
$hlast= @fopen(&amp;quot;/tmp/last_update.mrtg&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
if (($hlast) and ($last_now == fgets($hlast))) {&lt;br /&gt;
  fclose($hlast);&lt;br /&gt;
  echo &amp;quot;No changes.\n&amp;quot;;&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_mrtg&amp;quot;, &amp;quot;w+&amp;quot;) or die('Error!');&lt;br /&gt;
  fwrite($hlast,$now);&lt;br /&gt;
  fclose($hlast);&lt;br /&gt;
  exit();&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
print &amp;quot;Sever CNML dated as: &amp;quot;.date('Y/m/d H:i:s',$last_now).&amp;quot;\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Server CNML has changed, so going to call the server for the new file&lt;br /&gt;
# Befoge calling, sleep $SNPGrahServerId mod 285 (4 min, 45 segs) to spread across that&lt;br /&gt;
# timeslot.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;Waiting for  &amp;quot;.$secs.&amp;quot;.&amp;quot;.$nanos.&amp;quot; seconds\n&amp;quot;;&lt;br /&gt;
time_nanosleep($secs,($nanos * 10000000));&lt;br /&gt;
print date('Y/m/d H:i:s').&amp;quot;\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$hf = @fopen($MRTGConfigSource,&amp;quot;r&amp;quot;) or die('Error reading MRTG csv input\n&amp;quot;');&lt;br /&gt;
$cf = @fopen('../data/mrtg.cfg','w+');&lt;br /&gt;
&lt;br /&gt;
fputs($cf,sprintf($rrdtool_header,$rrdimg_path,$rrdimg_path,$rrddb_path,$rrddb_path));&lt;br /&gt;
&lt;br /&gt;
while ( $buffer = fgets($hf, 4096) ) {&lt;br /&gt;
  $node_line_array = explode(&amp;quot;,&amp;quot;,$buffer);&lt;br /&gt;
  $line = $node_line_array[count($node_line_array) - 1];&lt;br /&gt;
  if ( substr($buffer,0,1) == '#' || $line == &amp;quot;Planned\n&amp;quot; || $line == &amp;quot;Dropped\n&amp;quot; || $line == &amp;quot;Building\n&amp;quot; || $line == &amp;quot;Reserved\n&amp;quot; )&lt;br /&gt;
          continue;&lt;br /&gt;
&lt;br /&gt;
  $buffer = str_replace(&amp;quot;\n&amp;quot;,&amp;quot;&amp;quot;,$buffer);&lt;br /&gt;
  $dev=explode(',',$buffer);&lt;br /&gt;
  if ( count($dev) != 5 ) {&lt;br /&gt;
                 $dev[0] = $dev[0];&lt;br /&gt;
                 $dev[1] = $dev[1];&lt;br /&gt;
                 $dev[2] = $dev[2];&lt;br /&gt;
                 $dev[3] = 'eth0;';&lt;br /&gt;
                 $dev[4] = $dev[3];&lt;br /&gt;
  }&lt;br /&gt;
 fputs($cf,sprintf($mrtg_ping_template,&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[1],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[1],&lt;br /&gt;
                 $dev[1],&lt;br /&gt;
                 $dev[2],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[2],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0])&lt;br /&gt;
       );&lt;br /&gt;
  $t = explode('|',$dev[3]);&lt;br /&gt;
&lt;br /&gt;
  foreach ($t as $k=&amp;gt;$r)  {&lt;br /&gt;
    // is the snmp Index given??&lt;br /&gt;
    if (is_numeric($r)) {&lt;br /&gt;
      $rn = $dev[0].'-'.$r;&lt;br /&gt;
      $trap = $r;&lt;br /&gt;
      $wn = 'wLan';&lt;br /&gt;
    } // end if numeric snmp Index&lt;br /&gt;
    else {&lt;br /&gt;
      $rn = $dev[0].'-'.$k;&lt;br /&gt;
      // snmp is given by interface name&lt;br /&gt;
      $d = explode(';',$r);&lt;br /&gt;
      $wn = $d[1];&lt;br /&gt;
      $trap = '\\'.$d[0];&lt;br /&gt;
    }&lt;br /&gt;
    fputs($cf,sprintf($mrtg_traffic_template.&amp;quot;\n&amp;quot;,&lt;br /&gt;
                   $rn,&lt;br /&gt;
                   $trap,&lt;br /&gt;
                   $dev[2],&lt;br /&gt;
                   $rn,&lt;br /&gt;
                   $dev[2],&lt;br /&gt;
                   $dev[1],&lt;br /&gt;
                   $rn, $rn,&lt;br /&gt;
                   $wn,&lt;br /&gt;
                   $dev[1],&lt;br /&gt;
                   $rn,&lt;br /&gt;
                   $wn,&lt;br /&gt;
                   $dev[1],&lt;br /&gt;
                   $dev[1],&lt;br /&gt;
                   $wn)&lt;br /&gt;
         );&lt;br /&gt;
&lt;br /&gt;
  } // foreach interface&lt;br /&gt;
}&lt;br /&gt;
fclose($hf);&lt;br /&gt;
fclose($cf);&lt;br /&gt;
&lt;br /&gt;
$hlast= @fopen(&amp;quot;/tmp/last_update.mrtg&amp;quot;, &amp;quot;w+&amp;quot;) or die('Error!');&lt;br /&gt;
fwrite($hlast,$last_now);&lt;br /&gt;
fclose($hlast);&lt;br /&gt;
$hlast= @fopen(&amp;quot;/tmp/last_mrtg&amp;quot;, &amp;quot;w+&amp;quot;) or die('Error!');&lt;br /&gt;
fwrite($hlast,$now);&lt;br /&gt;
fclose($hlast);&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
este archivo es &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
  $rootZone = 52771;&lt;br /&gt;
#3671;&lt;br /&gt;
&lt;br /&gt;
  $minX = 999;&lt;br /&gt;
  $minY = 999;&lt;br /&gt;
  $maxX = -999;&lt;br /&gt;
  $maxY = -999;&lt;br /&gt;
&lt;br /&gt;
  $members = array();&lt;br /&gt;
&lt;br /&gt;
  $hlastnow = @fopen(&amp;quot;http://guifi.net/guifi/refresh/maps&amp;quot;, &amp;quot;r&amp;quot;) or die('Error reading changes\n');&lt;br /&gt;
  $last_now = fgets($hlastnow);&lt;br /&gt;
  fclose($hlastnow);&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_update.cnml&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
  if (($hlast) and ($last_now == fgets($hlast))) {&lt;br /&gt;
    fclose($hlast);&lt;br /&gt;
    echo &amp;quot;No changes.\n&amp;quot;;&lt;br /&gt;
    exit();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  echo &amp;quot;Getting CNML file\n&amp;quot;;&lt;br /&gt;
  $hcnml = @fopen(&amp;quot;http://guifi.net/guifi/cnml/&amp;quot;.$rootZone.&amp;quot;/detail&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
  $wcnml = @fopen(&amp;quot;guifi.cnml&amp;quot;, &amp;quot;w+&amp;quot;);&lt;br /&gt;
  while (!feof($hcnml)) {&lt;br /&gt;
       $buffer = fgets($hcnml, 4096);&lt;br /&gt;
       fwrite($wcnml,$buffer);&lt;br /&gt;
  }&lt;br /&gt;
  fclose($hcnml);&lt;br /&gt;
  fclose($wcnml);&lt;br /&gt;
&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_update.cnml&amp;quot;, &amp;quot;w+&amp;quot;) or die('Error!');&lt;br /&gt;
  fwrite($hlast,$last_now);&lt;br /&gt;
  fclose($hlast);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= PMF =&lt;br /&gt;
* [[Regenerar los ficheros rrd]]&lt;br /&gt;
* tener en cuenta que al connectar un dispositivo por cable ponerlo en Lan o en la ubicacion que sea, sino puede que no grafique correctamente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Referencias =&lt;br /&gt;
*[http://www.guifi.net/proxy-debian manual debian de guifi.net]&lt;br /&gt;
*[http://asociacionjuvenilelcueto.info/node/156 manual de la associació Juvenil el Cueto (Rioja)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ca:Servidor_de_gràfiques]]&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas</id>
		<title>Servidor de gráficas</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas"/>
				<updated>2012-11-06T09:24:16Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: /* Definicion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= Definicion = &lt;br /&gt;
El servidor de gráficas se baas en el servicio de GUIFI llamado SNPServices.&lt;br /&gt;
El servidor SNPServices, y para ser mas exactos cliente SNPServices es un servidor linux, con php, apache, mrtg y rrdtool, no&lt;br /&gt;
necesita nada mas.&lt;br /&gt;
Le llamamos cliente porque el servidor Master SNPServices es un servidor que nos enviará informacion a nuestro servidor cliente SNPServices.&lt;br /&gt;
Aqui tienes un esquema que te hará ver claro esta definicion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Definicion para expertos&lt;br /&gt;
El cliente SNPServices consulta al Master snpservices la lista de nodos a monitorear, recogida previamente del servidor web mediante CNML, se parsea la lista y formatea scripts mrtg y los&lt;br /&gt;
ejecuta (pings y trafico) para generar un rrd y con consultas http desde el servidor web, se ejecuta un php que convierte los .rrd en imagenes y las muestra.&lt;br /&gt;
&lt;br /&gt;
El servidor WEB de guifi.net conoce la url del servidor de graficas de la zona de un nodo, o sea, los SNPServices clientes de cada zona. La web muestra sus datos locales y los datos remotos.&lt;br /&gt;
&lt;br /&gt;
Definicion extendida&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un nodo crea un servicio de servidor de gráficas en la web. Este servicio le concede un numero que le identifica. A este valor le llamamos '''$SNPGraphServerId''' &lt;br /&gt;
Aquest servidor de gràfics, s'instalara un servei Apache, php i els ervei SNPServices. La direccio web l'anomenarem com '''$SNPDataServer_url'''&lt;br /&gt;
&lt;br /&gt;
Este servicio puede ser ademas supernodo de una zona y por tanto tiene el código de la zona. A este valor el llamamos '''$rootZone'''&lt;br /&gt;
Al crearse este nodo, se actualiza la BBDD de la web- Esta base de datos contiene toda la información de los nodos,servicios y demas de GUIFI.NET&lt;br /&gt;
&lt;br /&gt;
Abans de continuar amb el treball que fa el servidor SNPServices client, el Master SNPServices ha de fer un treball.&lt;br /&gt;
El Master SNPServices consulta al servidor Web una lista de todos los nodos de una zona. Aquesta pregunta la fa amb el script php que es diu '''refresh_cnml.php.''' . El servidor web li torna una llista de nodes en format CNML que enmagatzema en un arxiu que es diu /var/lib/snpservices/data/guifi.cnml&lt;br /&gt;
&lt;br /&gt;
Exactament l'arxiu que obre es aixi $SNPDataServer_url.&amp;quot;/guifi/cnml/&amp;quot;.$rootZone.&amp;quot;/detail&amp;quot;&lt;br /&gt;
&lt;br /&gt;
El servidor web torna un arxiu i el servidor SNPServices el guarda a /var/lib/snpservices/data/guifi.cnml&lt;br /&gt;
&lt;br /&gt;
= Manuales =&lt;br /&gt;
* [[Servidor de gráficas 1]] (Debian/Ubuntu) método apt + configuración virtualhost apache&lt;br /&gt;
* [[Servidor de gráficas 2]] (Debian/Ubuntu) método dpkg&lt;br /&gt;
* [[Servidor de gráficas 3]] (Debian/Ubuntu) extendido&lt;br /&gt;
&lt;br /&gt;
= Como trabaja el cliente SNPServices =&lt;br /&gt;
El cliente SNPServices tiene varios passos a realizar para poder recopilar datos y hacer un escaneo en las direcciones cercanas.&lt;br /&gt;
&lt;br /&gt;
La lista de nodos a buscar se hace mediante cnml2mrtgcsv.php&lt;br /&gt;
Cuando tiene esta lista hace un escaneo a los nodos&lt;br /&gt;
La información que ha de buscar en los nodos se hace mediante el archivo mrtgcsv2mrtgcfg.php&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
if (file_exists(&amp;quot;/var/www/guifi/snpservices/common/config.php&amp;quot;)) {&lt;br /&gt;
   include_once(&amp;quot;/var/www/guifi/snpservices/common/config.php&amp;quot;);&lt;br /&gt;
} else {&lt;br /&gt;
  include_once(&amp;quot;/var/www/guifi/snpservices/common/config.php.template&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$now = time();&lt;br /&gt;
$mlast= @fopen(&amp;quot;/tmp/last_mrtg&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
if ($mlast)&lt;br /&gt;
  $last = fgets($mlast);&lt;br /&gt;
else&lt;br /&gt;
  $last = 0;&lt;br /&gt;
print &amp;quot;Last: &amp;quot;.date('Y/m/d H:i:s',((int)$last)+(60*60)).&amp;quot;\n&amp;quot;;&lt;br /&gt;
print &amp;quot;Now: &amp;quot;.date('Y/m/d H:i:s',(int)$now).&amp;quot;\n&amp;quot;;&lt;br /&gt;
print &amp;quot;ServerId: &amp;quot;.$SNPGraphServerId.&amp;quot;\n&amp;quot;;&lt;br /&gt;
#&lt;br /&gt;
# Looks if the files has been refreshed at least between 60 an 90 mins ago&lt;br /&gt;
# range 60..90 depends on $SNPGraphServerId mod 30&lt;br /&gt;
# if is still fresh, does not even looks to the server to check if it has changed&lt;br /&gt;
#&lt;br /&gt;
$secs = $SNPGraphServerId % 285;&lt;br /&gt;
$mins = $SNPGraphServerId % 30;&lt;br /&gt;
$nanos = $SNPGraphServerId % 10;&lt;br /&gt;
if (($last) and ($now &amp;lt; ($last +  ((60 + $mins) * 60)))) {&lt;br /&gt;
  fclose($mlast);&lt;br /&gt;
  echo &amp;quot;Still fresh.\n&amp;quot;;&lt;br /&gt;
  exit();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Local file is not fresh, so looks to the server and cheks if has changed&lt;br /&gt;
#&lt;br /&gt;
$hlastnow = @fopen($SNPDataServer_url.&amp;quot;/guifi/cnml&amp;quot;, &amp;quot;r&amp;quot;) or die('Error reading changes\n');&lt;br /&gt;
$last_now = fgets($hlastnow);&lt;br /&gt;
fclose($hlastnow);&lt;br /&gt;
$hlast= @fopen(&amp;quot;/tmp/last_update.mrtg&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
if (($hlast) and ($last_now == fgets($hlast))) {&lt;br /&gt;
  fclose($hlast);&lt;br /&gt;
  echo &amp;quot;No changes.\n&amp;quot;;&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_mrtg&amp;quot;, &amp;quot;w+&amp;quot;) or die('Error!');&lt;br /&gt;
  fwrite($hlast,$now);&lt;br /&gt;
  fclose($hlast);&lt;br /&gt;
  exit();&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
print &amp;quot;Sever CNML dated as: &amp;quot;.date('Y/m/d H:i:s',$last_now).&amp;quot;\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Server CNML has changed, so going to call the server for the new file&lt;br /&gt;
# Befoge calling, sleep $SNPGrahServerId mod 285 (4 min, 45 segs) to spread across that&lt;br /&gt;
# timeslot.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;Waiting for  &amp;quot;.$secs.&amp;quot;.&amp;quot;.$nanos.&amp;quot; seconds\n&amp;quot;;&lt;br /&gt;
time_nanosleep($secs,($nanos * 10000000));&lt;br /&gt;
print date('Y/m/d H:i:s').&amp;quot;\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$hf = @fopen($MRTGConfigSource,&amp;quot;r&amp;quot;) or die('Error reading MRTG csv input\n&amp;quot;');&lt;br /&gt;
$cf = @fopen('../data/mrtg.cfg','w+');&lt;br /&gt;
&lt;br /&gt;
fputs($cf,sprintf($rrdtool_header,$rrdimg_path,$rrdimg_path,$rrddb_path,$rrddb_path));&lt;br /&gt;
&lt;br /&gt;
while ( $buffer = fgets($hf, 4096) ) {&lt;br /&gt;
  $node_line_array = explode(&amp;quot;,&amp;quot;,$buffer);&lt;br /&gt;
  $line = $node_line_array[count($node_line_array) - 1];&lt;br /&gt;
  if ( substr($buffer,0,1) == '#' || $line == &amp;quot;Planned\n&amp;quot; || $line == &amp;quot;Dropped\n&amp;quot; || $line == &amp;quot;Building\n&amp;quot; || $line == &amp;quot;Reserved\n&amp;quot; )&lt;br /&gt;
          continue;&lt;br /&gt;
&lt;br /&gt;
  $buffer = str_replace(&amp;quot;\n&amp;quot;,&amp;quot;&amp;quot;,$buffer);&lt;br /&gt;
  $dev=explode(',',$buffer);&lt;br /&gt;
  if ( count($dev) != 5 ) {&lt;br /&gt;
                 $dev[0] = $dev[0];&lt;br /&gt;
                 $dev[1] = $dev[1];&lt;br /&gt;
                 $dev[2] = $dev[2];&lt;br /&gt;
                 $dev[3] = 'eth0;';&lt;br /&gt;
                 $dev[4] = $dev[3];&lt;br /&gt;
  }&lt;br /&gt;
 fputs($cf,sprintf($mrtg_ping_template,&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[1],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[1],&lt;br /&gt;
                 $dev[1],&lt;br /&gt;
                 $dev[2],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[2],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0])&lt;br /&gt;
       );&lt;br /&gt;
  $t = explode('|',$dev[3]);&lt;br /&gt;
&lt;br /&gt;
  foreach ($t as $k=&amp;gt;$r)  {&lt;br /&gt;
    // is the snmp Index given??&lt;br /&gt;
    if (is_numeric($r)) {&lt;br /&gt;
      $rn = $dev[0].'-'.$r;&lt;br /&gt;
      $trap = $r;&lt;br /&gt;
      $wn = 'wLan';&lt;br /&gt;
    } // end if numeric snmp Index&lt;br /&gt;
    else {&lt;br /&gt;
      $rn = $dev[0].'-'.$k;&lt;br /&gt;
      // snmp is given by interface name&lt;br /&gt;
      $d = explode(';',$r);&lt;br /&gt;
      $wn = $d[1];&lt;br /&gt;
      $trap = '\\'.$d[0];&lt;br /&gt;
    }&lt;br /&gt;
    fputs($cf,sprintf($mrtg_traffic_template.&amp;quot;\n&amp;quot;,&lt;br /&gt;
                   $rn,&lt;br /&gt;
                   $trap,&lt;br /&gt;
                   $dev[2],&lt;br /&gt;
                   $rn,&lt;br /&gt;
                   $dev[2],&lt;br /&gt;
                   $dev[1],&lt;br /&gt;
                   $rn, $rn,&lt;br /&gt;
                   $wn,&lt;br /&gt;
                   $dev[1],&lt;br /&gt;
                   $rn,&lt;br /&gt;
                   $wn,&lt;br /&gt;
                   $dev[1],&lt;br /&gt;
                   $dev[1],&lt;br /&gt;
                   $wn)&lt;br /&gt;
         );&lt;br /&gt;
&lt;br /&gt;
  } // foreach interface&lt;br /&gt;
}&lt;br /&gt;
fclose($hf);&lt;br /&gt;
fclose($cf);&lt;br /&gt;
&lt;br /&gt;
$hlast= @fopen(&amp;quot;/tmp/last_update.mrtg&amp;quot;, &amp;quot;w+&amp;quot;) or die('Error!');&lt;br /&gt;
fwrite($hlast,$last_now);&lt;br /&gt;
fclose($hlast);&lt;br /&gt;
$hlast= @fopen(&amp;quot;/tmp/last_mrtg&amp;quot;, &amp;quot;w+&amp;quot;) or die('Error!');&lt;br /&gt;
fwrite($hlast,$now);&lt;br /&gt;
fclose($hlast);&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
este archivo es &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
  $rootZone = 52771;&lt;br /&gt;
#3671;&lt;br /&gt;
&lt;br /&gt;
  $minX = 999;&lt;br /&gt;
  $minY = 999;&lt;br /&gt;
  $maxX = -999;&lt;br /&gt;
  $maxY = -999;&lt;br /&gt;
&lt;br /&gt;
  $members = array();&lt;br /&gt;
&lt;br /&gt;
  $hlastnow = @fopen(&amp;quot;http://guifi.net/guifi/refresh/maps&amp;quot;, &amp;quot;r&amp;quot;) or die('Error reading changes\n');&lt;br /&gt;
  $last_now = fgets($hlastnow);&lt;br /&gt;
  fclose($hlastnow);&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_update.cnml&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
  if (($hlast) and ($last_now == fgets($hlast))) {&lt;br /&gt;
    fclose($hlast);&lt;br /&gt;
    echo &amp;quot;No changes.\n&amp;quot;;&lt;br /&gt;
    exit();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  echo &amp;quot;Getting CNML file\n&amp;quot;;&lt;br /&gt;
  $hcnml = @fopen(&amp;quot;http://guifi.net/guifi/cnml/&amp;quot;.$rootZone.&amp;quot;/detail&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
  $wcnml = @fopen(&amp;quot;guifi.cnml&amp;quot;, &amp;quot;w+&amp;quot;);&lt;br /&gt;
  while (!feof($hcnml)) {&lt;br /&gt;
       $buffer = fgets($hcnml, 4096);&lt;br /&gt;
       fwrite($wcnml,$buffer);&lt;br /&gt;
  }&lt;br /&gt;
  fclose($hcnml);&lt;br /&gt;
  fclose($wcnml);&lt;br /&gt;
&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_update.cnml&amp;quot;, &amp;quot;w+&amp;quot;) or die('Error!');&lt;br /&gt;
  fwrite($hlast,$last_now);&lt;br /&gt;
  fclose($hlast);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= PMF =&lt;br /&gt;
* [[Regenerar los ficheros rrd]]&lt;br /&gt;
* tener en cuenta que al connectar un dispositivo por cable ponerlo en Lan o en la ubicacion que sea, sino puede que no grafique correctamente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Referencias =&lt;br /&gt;
*[http://www.guifi.net/proxy-debian manual debian de guifi.net]&lt;br /&gt;
*[http://asociacionjuvenilelcueto.info/node/156 manual de la associació Juvenil el Cueto (Rioja)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ca:Servidor_de_gràfiques]]&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas</id>
		<title>Servidor de gráficas</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas"/>
				<updated>2012-10-29T10:00:04Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: /* Como trabaja el cliente SNPServices */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= Definicion = &lt;br /&gt;
El servidor de gráficas se baas en el servicio de GUIFI llamado SNPServices.&lt;br /&gt;
El servidor SNPServices, y para ser mas exactos cliente SNPServices es un servidor linux, con php, apache, mrtg y rrdtool, no&lt;br /&gt;
necesita nada mas.&lt;br /&gt;
Le llamamos cliente porque el servidor Master SNPServices es un servidor que nos enviará informacion a nuestro servidor cliente SNPServices.&lt;br /&gt;
Aqui tienes un esquema que te hará ver claro esta definicion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El cliente SNPServices consulta al Master snpservices la lista de nodos a monitorear, con php se parsea la lista y formatea scripts mrtg y los&lt;br /&gt;
ejecuta (pings y trafico) para generar un rrd y con sonsultas http, se ejecuta un php que convierte los .rrd en imagenes y las muestra.&lt;br /&gt;
&lt;br /&gt;
El servidor WEB de guifi.net conoce la url del servidor de graficas de la zona de un nodo, y cuando visitas un nodo en la web se muestran las&lt;br /&gt;
graficas/imagenes remotas que hay en los servidores SNPServices cliente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Manuales =&lt;br /&gt;
* [[Servidor de gráficas 1]] (Debian/Ubuntu) método apt + configuración virtualhost apache&lt;br /&gt;
* [[Servidor de gráficas 2]] (Debian/Ubuntu) método dpkg&lt;br /&gt;
* [[Servidor de gráficas 3]] (Debian/Ubuntu) extendido&lt;br /&gt;
&lt;br /&gt;
= Como trabaja el cliente SNPServices =&lt;br /&gt;
El cliente SNPServices tiene varios passos a realizar para poder recopilar datos y hacer un escaneo en las direcciones cercanas.&lt;br /&gt;
&lt;br /&gt;
La lista de nodos a buscar se hace mediante cnml2mrtgcsv.php&lt;br /&gt;
Cuando tiene esta lista hace un escaneo a los nodos&lt;br /&gt;
La información que ha de buscar en los nodos se hace mediante el archivo mrtgcsv2mrtgcfg.php&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
if (file_exists(&amp;quot;/var/www/guifi/snpservices/common/config.php&amp;quot;)) {&lt;br /&gt;
   include_once(&amp;quot;/var/www/guifi/snpservices/common/config.php&amp;quot;);&lt;br /&gt;
} else {&lt;br /&gt;
  include_once(&amp;quot;/var/www/guifi/snpservices/common/config.php.template&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$now = time();&lt;br /&gt;
$mlast= @fopen(&amp;quot;/tmp/last_mrtg&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
if ($mlast)&lt;br /&gt;
  $last = fgets($mlast);&lt;br /&gt;
else&lt;br /&gt;
  $last = 0;&lt;br /&gt;
print &amp;quot;Last: &amp;quot;.date('Y/m/d H:i:s',((int)$last)+(60*60)).&amp;quot;\n&amp;quot;;&lt;br /&gt;
print &amp;quot;Now: &amp;quot;.date('Y/m/d H:i:s',(int)$now).&amp;quot;\n&amp;quot;;&lt;br /&gt;
print &amp;quot;ServerId: &amp;quot;.$SNPGraphServerId.&amp;quot;\n&amp;quot;;&lt;br /&gt;
#&lt;br /&gt;
# Looks if the files has been refreshed at least between 60 an 90 mins ago&lt;br /&gt;
# range 60..90 depends on $SNPGraphServerId mod 30&lt;br /&gt;
# if is still fresh, does not even looks to the server to check if it has changed&lt;br /&gt;
#&lt;br /&gt;
$secs = $SNPGraphServerId % 285;&lt;br /&gt;
$mins = $SNPGraphServerId % 30;&lt;br /&gt;
$nanos = $SNPGraphServerId % 10;&lt;br /&gt;
if (($last) and ($now &amp;lt; ($last +  ((60 + $mins) * 60)))) {&lt;br /&gt;
  fclose($mlast);&lt;br /&gt;
  echo &amp;quot;Still fresh.\n&amp;quot;;&lt;br /&gt;
  exit();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Local file is not fresh, so looks to the server and cheks if has changed&lt;br /&gt;
#&lt;br /&gt;
$hlastnow = @fopen($SNPDataServer_url.&amp;quot;/guifi/cnml&amp;quot;, &amp;quot;r&amp;quot;) or die('Error reading changes\n');&lt;br /&gt;
$last_now = fgets($hlastnow);&lt;br /&gt;
fclose($hlastnow);&lt;br /&gt;
$hlast= @fopen(&amp;quot;/tmp/last_update.mrtg&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
if (($hlast) and ($last_now == fgets($hlast))) {&lt;br /&gt;
  fclose($hlast);&lt;br /&gt;
  echo &amp;quot;No changes.\n&amp;quot;;&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_mrtg&amp;quot;, &amp;quot;w+&amp;quot;) or die('Error!');&lt;br /&gt;
  fwrite($hlast,$now);&lt;br /&gt;
  fclose($hlast);&lt;br /&gt;
  exit();&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
print &amp;quot;Sever CNML dated as: &amp;quot;.date('Y/m/d H:i:s',$last_now).&amp;quot;\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Server CNML has changed, so going to call the server for the new file&lt;br /&gt;
# Befoge calling, sleep $SNPGrahServerId mod 285 (4 min, 45 segs) to spread across that&lt;br /&gt;
# timeslot.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;Waiting for  &amp;quot;.$secs.&amp;quot;.&amp;quot;.$nanos.&amp;quot; seconds\n&amp;quot;;&lt;br /&gt;
time_nanosleep($secs,($nanos * 10000000));&lt;br /&gt;
print date('Y/m/d H:i:s').&amp;quot;\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$hf = @fopen($MRTGConfigSource,&amp;quot;r&amp;quot;) or die('Error reading MRTG csv input\n&amp;quot;');&lt;br /&gt;
$cf = @fopen('../data/mrtg.cfg','w+');&lt;br /&gt;
&lt;br /&gt;
fputs($cf,sprintf($rrdtool_header,$rrdimg_path,$rrdimg_path,$rrddb_path,$rrddb_path));&lt;br /&gt;
&lt;br /&gt;
while ( $buffer = fgets($hf, 4096) ) {&lt;br /&gt;
  $node_line_array = explode(&amp;quot;,&amp;quot;,$buffer);&lt;br /&gt;
  $line = $node_line_array[count($node_line_array) - 1];&lt;br /&gt;
  if ( substr($buffer,0,1) == '#' || $line == &amp;quot;Planned\n&amp;quot; || $line == &amp;quot;Dropped\n&amp;quot; || $line == &amp;quot;Building\n&amp;quot; || $line == &amp;quot;Reserved\n&amp;quot; )&lt;br /&gt;
          continue;&lt;br /&gt;
&lt;br /&gt;
  $buffer = str_replace(&amp;quot;\n&amp;quot;,&amp;quot;&amp;quot;,$buffer);&lt;br /&gt;
  $dev=explode(',',$buffer);&lt;br /&gt;
  if ( count($dev) != 5 ) {&lt;br /&gt;
                 $dev[0] = $dev[0];&lt;br /&gt;
                 $dev[1] = $dev[1];&lt;br /&gt;
                 $dev[2] = $dev[2];&lt;br /&gt;
                 $dev[3] = 'eth0;';&lt;br /&gt;
                 $dev[4] = $dev[3];&lt;br /&gt;
  }&lt;br /&gt;
 fputs($cf,sprintf($mrtg_ping_template,&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[1],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[1],&lt;br /&gt;
                 $dev[1],&lt;br /&gt;
                 $dev[2],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[2],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0])&lt;br /&gt;
       );&lt;br /&gt;
  $t = explode('|',$dev[3]);&lt;br /&gt;
&lt;br /&gt;
  foreach ($t as $k=&amp;gt;$r)  {&lt;br /&gt;
    // is the snmp Index given??&lt;br /&gt;
    if (is_numeric($r)) {&lt;br /&gt;
      $rn = $dev[0].'-'.$r;&lt;br /&gt;
      $trap = $r;&lt;br /&gt;
      $wn = 'wLan';&lt;br /&gt;
    } // end if numeric snmp Index&lt;br /&gt;
    else {&lt;br /&gt;
      $rn = $dev[0].'-'.$k;&lt;br /&gt;
      // snmp is given by interface name&lt;br /&gt;
      $d = explode(';',$r);&lt;br /&gt;
      $wn = $d[1];&lt;br /&gt;
      $trap = '\\'.$d[0];&lt;br /&gt;
    }&lt;br /&gt;
    fputs($cf,sprintf($mrtg_traffic_template.&amp;quot;\n&amp;quot;,&lt;br /&gt;
                   $rn,&lt;br /&gt;
                   $trap,&lt;br /&gt;
                   $dev[2],&lt;br /&gt;
                   $rn,&lt;br /&gt;
                   $dev[2],&lt;br /&gt;
                   $dev[1],&lt;br /&gt;
                   $rn, $rn,&lt;br /&gt;
                   $wn,&lt;br /&gt;
                   $dev[1],&lt;br /&gt;
                   $rn,&lt;br /&gt;
                   $wn,&lt;br /&gt;
                   $dev[1],&lt;br /&gt;
                   $dev[1],&lt;br /&gt;
                   $wn)&lt;br /&gt;
         );&lt;br /&gt;
&lt;br /&gt;
  } // foreach interface&lt;br /&gt;
}&lt;br /&gt;
fclose($hf);&lt;br /&gt;
fclose($cf);&lt;br /&gt;
&lt;br /&gt;
$hlast= @fopen(&amp;quot;/tmp/last_update.mrtg&amp;quot;, &amp;quot;w+&amp;quot;) or die('Error!');&lt;br /&gt;
fwrite($hlast,$last_now);&lt;br /&gt;
fclose($hlast);&lt;br /&gt;
$hlast= @fopen(&amp;quot;/tmp/last_mrtg&amp;quot;, &amp;quot;w+&amp;quot;) or die('Error!');&lt;br /&gt;
fwrite($hlast,$now);&lt;br /&gt;
fclose($hlast);&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
este archivo es &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
  $rootZone = 52771;&lt;br /&gt;
#3671;&lt;br /&gt;
&lt;br /&gt;
  $minX = 999;&lt;br /&gt;
  $minY = 999;&lt;br /&gt;
  $maxX = -999;&lt;br /&gt;
  $maxY = -999;&lt;br /&gt;
&lt;br /&gt;
  $members = array();&lt;br /&gt;
&lt;br /&gt;
  $hlastnow = @fopen(&amp;quot;http://guifi.net/guifi/refresh/maps&amp;quot;, &amp;quot;r&amp;quot;) or die('Error reading changes\n');&lt;br /&gt;
  $last_now = fgets($hlastnow);&lt;br /&gt;
  fclose($hlastnow);&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_update.cnml&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
  if (($hlast) and ($last_now == fgets($hlast))) {&lt;br /&gt;
    fclose($hlast);&lt;br /&gt;
    echo &amp;quot;No changes.\n&amp;quot;;&lt;br /&gt;
    exit();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  echo &amp;quot;Getting CNML file\n&amp;quot;;&lt;br /&gt;
  $hcnml = @fopen(&amp;quot;http://guifi.net/guifi/cnml/&amp;quot;.$rootZone.&amp;quot;/detail&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
  $wcnml = @fopen(&amp;quot;guifi.cnml&amp;quot;, &amp;quot;w+&amp;quot;);&lt;br /&gt;
  while (!feof($hcnml)) {&lt;br /&gt;
       $buffer = fgets($hcnml, 4096);&lt;br /&gt;
       fwrite($wcnml,$buffer);&lt;br /&gt;
  }&lt;br /&gt;
  fclose($hcnml);&lt;br /&gt;
  fclose($wcnml);&lt;br /&gt;
&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_update.cnml&amp;quot;, &amp;quot;w+&amp;quot;) or die('Error!');&lt;br /&gt;
  fwrite($hlast,$last_now);&lt;br /&gt;
  fclose($hlast);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= PMF =&lt;br /&gt;
* [[Regenerar los ficheros rrd]]&lt;br /&gt;
* tener en cuenta que al connectar un dispositivo por cable ponerlo en Lan o en la ubicacion que sea, sino puede que no grafique correctamente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Referencias =&lt;br /&gt;
*[http://www.guifi.net/proxy-debian manual debian de guifi.net]&lt;br /&gt;
*[http://asociacionjuvenilelcueto.info/node/156 manual de la associació Juvenil el Cueto (Rioja)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ca:Servidor_de_gràfiques]]&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas</id>
		<title>Servidor de gráficas</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas"/>
				<updated>2012-10-29T09:58:54Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: /* Como trabaja el cliente SNPServices */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= Definicion = &lt;br /&gt;
El servidor de gráficas se baas en el servicio de GUIFI llamado SNPServices.&lt;br /&gt;
El servidor SNPServices, y para ser mas exactos cliente SNPServices es un servidor linux, con php, apache, mrtg y rrdtool, no&lt;br /&gt;
necesita nada mas.&lt;br /&gt;
Le llamamos cliente porque el servidor Master SNPServices es un servidor que nos enviará informacion a nuestro servidor cliente SNPServices.&lt;br /&gt;
Aqui tienes un esquema que te hará ver claro esta definicion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El cliente SNPServices consulta al Master snpservices la lista de nodos a monitorear, con php se parsea la lista y formatea scripts mrtg y los&lt;br /&gt;
ejecuta (pings y trafico) para generar un rrd y con sonsultas http, se ejecuta un php que convierte los .rrd en imagenes y las muestra.&lt;br /&gt;
&lt;br /&gt;
El servidor WEB de guifi.net conoce la url del servidor de graficas de la zona de un nodo, y cuando visitas un nodo en la web se muestran las&lt;br /&gt;
graficas/imagenes remotas que hay en los servidores SNPServices cliente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Manuales =&lt;br /&gt;
* [[Servidor de gráficas 1]] (Debian/Ubuntu) método apt + configuración virtualhost apache&lt;br /&gt;
* [[Servidor de gráficas 2]] (Debian/Ubuntu) método dpkg&lt;br /&gt;
* [[Servidor de gráficas 3]] (Debian/Ubuntu) extendido&lt;br /&gt;
&lt;br /&gt;
= Como trabaja el cliente SNPServices =&lt;br /&gt;
El cliente SNPServices tiene varios passos a realizar para poder recopilar datos y hacer un escaneo en las direcciones cercanas.&lt;br /&gt;
&lt;br /&gt;
La lista de nodos a buscar se hace mediante cnml2mrtgcsv.php&lt;br /&gt;
Cuando tiene esta lista hace un escaneo a los nodos&lt;br /&gt;
La información que ha de buscar en los nodos se hace mediante el archivo mrtgcsv2mrtgcfg.php&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
if (file_exists(&amp;quot;/var/www/guifi/snpservices/common/config.php&amp;quot;)) {&lt;br /&gt;
   include_once(&amp;quot;/var/www/guifi/snpservices/common/config.php&amp;quot;);&lt;br /&gt;
} else {&lt;br /&gt;
  include_once(&amp;quot;/var/www/guifi/snpservices/common/config.php.template&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$now = time();&lt;br /&gt;
$mlast= @fopen(&amp;quot;/tmp/last_mrtg&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
if ($mlast)&lt;br /&gt;
  $last = fgets($mlast);&lt;br /&gt;
else&lt;br /&gt;
  $last = 0;&lt;br /&gt;
print &amp;quot;Last: &amp;quot;.date('Y/m/d H:i:s',((int)$last)+(60*60)).&amp;quot;\n&amp;quot;;&lt;br /&gt;
print &amp;quot;Now: &amp;quot;.date('Y/m/d H:i:s',(int)$now).&amp;quot;\n&amp;quot;;&lt;br /&gt;
print &amp;quot;ServerId: &amp;quot;.$SNPGraphServerId.&amp;quot;\n&amp;quot;;&lt;br /&gt;
#&lt;br /&gt;
# Looks if the files has been refreshed at least between 60 an 90 mins ago&lt;br /&gt;
# range 60..90 depends on $SNPGraphServerId mod 30&lt;br /&gt;
# if is still fresh, does not even looks to the server to check if it has changed&lt;br /&gt;
#&lt;br /&gt;
$secs = $SNPGraphServerId % 285;&lt;br /&gt;
$mins = $SNPGraphServerId % 30;&lt;br /&gt;
$nanos = $SNPGraphServerId % 10;&lt;br /&gt;
if (($last) and ($now &amp;lt; ($last +  ((60 + $mins) * 60)))) {&lt;br /&gt;
  fclose($mlast);&lt;br /&gt;
  echo &amp;quot;Still fresh.\n&amp;quot;;&lt;br /&gt;
  exit();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Local file is not fresh, so looks to the server and cheks if has changed&lt;br /&gt;
#&lt;br /&gt;
$hlastnow = @fopen($SNPDataServer_url.&amp;quot;/guifi/cnml&amp;quot;, &amp;quot;r&amp;quot;) or die('Error reading changes\n');&lt;br /&gt;
$last_now = fgets($hlastnow);&lt;br /&gt;
fclose($hlastnow);&lt;br /&gt;
$hlast= @fopen(&amp;quot;/tmp/last_update.mrtg&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
if (($hlast) and ($last_now == fgets($hlast))) {&lt;br /&gt;
  fclose($hlast);&lt;br /&gt;
  echo &amp;quot;No changes.\n&amp;quot;;&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_mrtg&amp;quot;, &amp;quot;w+&amp;quot;) or die('Error!');&lt;br /&gt;
  fwrite($hlast,$now);&lt;br /&gt;
  fclose($hlast);&lt;br /&gt;
  exit();&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
print &amp;quot;Sever CNML dated as: &amp;quot;.date('Y/m/d H:i:s',$last_now).&amp;quot;\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Server CNML has changed, so going to call the server for the new file&lt;br /&gt;
# Befoge calling, sleep $SNPGrahServerId mod 285 (4 min, 45 segs) to spread across that&lt;br /&gt;
# timeslot.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;Waiting for  &amp;quot;.$secs.&amp;quot;.&amp;quot;.$nanos.&amp;quot; seconds\n&amp;quot;;&lt;br /&gt;
time_nanosleep($secs,($nanos * 10000000));&lt;br /&gt;
print date('Y/m/d H:i:s').&amp;quot;\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$hf = @fopen($MRTGConfigSource,&amp;quot;r&amp;quot;) or die('Error reading MRTG csv input\n&amp;quot;');&lt;br /&gt;
$cf = @fopen('../data/mrtg.cfg','w+');&lt;br /&gt;
&lt;br /&gt;
fputs($cf,sprintf($rrdtool_header,$rrdimg_path,$rrdimg_path,$rrddb_path,$rrddb_path));&lt;br /&gt;
&lt;br /&gt;
while ( $buffer = fgets($hf, 4096) ) {&lt;br /&gt;
  $node_line_array = explode(&amp;quot;,&amp;quot;,$buffer);&lt;br /&gt;
  $line = $node_line_array[count($node_line_array) - 1];&lt;br /&gt;
  if ( substr($buffer,0,1) == '#' || $line == &amp;quot;Planned\n&amp;quot; || $line == &amp;quot;Dropped\n&amp;quot; || $line == &amp;quot;Building\n&amp;quot; || $line == &amp;quot;Reserved\n&amp;quot; )&lt;br /&gt;
          continue;&lt;br /&gt;
&lt;br /&gt;
  $buffer = str_replace(&amp;quot;\n&amp;quot;,&amp;quot;&amp;quot;,$buffer);&lt;br /&gt;
  $dev=explode(',',$buffer);&lt;br /&gt;
  if ( count($dev) != 5 ) {&lt;br /&gt;
                 $dev[0] = $dev[0];&lt;br /&gt;
                 $dev[1] = $dev[1];&lt;br /&gt;
                 $dev[2] = $dev[2];&lt;br /&gt;
                 $dev[3] = 'eth0;';&lt;br /&gt;
                 $dev[4] = $dev[3];&lt;br /&gt;
  }&lt;br /&gt;
 fputs($cf,sprintf($mrtg_ping_template,&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[1],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[1],&lt;br /&gt;
                 $dev[1],&lt;br /&gt;
                 $dev[2],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[2],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0])&lt;br /&gt;
       );&lt;br /&gt;
  $t = explode('|',$dev[3]);&lt;br /&gt;
&lt;br /&gt;
  foreach ($t as $k=&amp;gt;$r)  {&lt;br /&gt;
    // is the snmp Index given??&lt;br /&gt;
    if (is_numeric($r)) {&lt;br /&gt;
      $rn = $dev[0].'-'.$r;&lt;br /&gt;
      $trap = $r;&lt;br /&gt;
      $wn = 'wLan';&lt;br /&gt;
    } // end if numeric snmp Index&lt;br /&gt;
    else {&lt;br /&gt;
      $rn = $dev[0].'-'.$k;&lt;br /&gt;
      // snmp is given by interface name&lt;br /&gt;
      $d = explode(';',$r);&lt;br /&gt;
      $wn = $d[1];&lt;br /&gt;
      $trap = '\\'.$d[0];&lt;br /&gt;
    }&lt;br /&gt;
    fputs($cf,sprintf($mrtg_traffic_template.&amp;quot;\n&amp;quot;,&lt;br /&gt;
                   $rn,&lt;br /&gt;
                   $trap,&lt;br /&gt;
                   $dev[2],&lt;br /&gt;
                   $rn,&lt;br /&gt;
                   $dev[2],&lt;br /&gt;
                   $dev[1],&lt;br /&gt;
                   $rn, $rn,&lt;br /&gt;
                   $wn,&lt;br /&gt;
                   $dev[1],&lt;br /&gt;
                   $rn,&lt;br /&gt;
                   $wn,&lt;br /&gt;
                   $dev[1],&lt;br /&gt;
                   $dev[1],&lt;br /&gt;
                   $wn)&lt;br /&gt;
         );&lt;br /&gt;
&lt;br /&gt;
  } // foreach interface&lt;br /&gt;
}&lt;br /&gt;
fclose($hf);&lt;br /&gt;
fclose($cf);&lt;br /&gt;
&lt;br /&gt;
$hlast= @fopen(&amp;quot;/tmp/last_update.mrtg&amp;quot;, &amp;quot;w+&amp;quot;) or die('Error!');&lt;br /&gt;
fwrite($hlast,$last_now);&lt;br /&gt;
fclose($hlast);&lt;br /&gt;
$hlast= @fopen(&amp;quot;/tmp/last_mrtg&amp;quot;, &amp;quot;w+&amp;quot;) or die('Error!');&lt;br /&gt;
fwrite($hlast,$now);&lt;br /&gt;
fclose($hlast);&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
este archivo es &lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
  $rootZone = 52771;&lt;br /&gt;
#3671;&lt;br /&gt;
&lt;br /&gt;
  $minX = 999;&lt;br /&gt;
  $minY = 999;&lt;br /&gt;
  $maxX = -999;&lt;br /&gt;
  $maxY = -999;&lt;br /&gt;
&lt;br /&gt;
  $members = array();&lt;br /&gt;
&lt;br /&gt;
  $hlastnow = @fopen(&amp;quot;http://guifi.net/guifi/refresh/maps&amp;quot;, &amp;quot;r&amp;quot;) or die('Error reading changes\n');&lt;br /&gt;
  $last_now = fgets($hlastnow);&lt;br /&gt;
  fclose($hlastnow);&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_update.cnml&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
  if (($hlast) and ($last_now == fgets($hlast))) {&lt;br /&gt;
    fclose($hlast);&lt;br /&gt;
    echo &amp;quot;No changes.\n&amp;quot;;&lt;br /&gt;
    exit();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  echo &amp;quot;Getting CNML file\n&amp;quot;;&lt;br /&gt;
  $hcnml = @fopen(&amp;quot;http://guifi.net/guifi/cnml/&amp;quot;.$rootZone.&amp;quot;/detail&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
  $wcnml = @fopen(&amp;quot;guifi.cnml&amp;quot;, &amp;quot;w+&amp;quot;);&lt;br /&gt;
  while (!feof($hcnml)) {&lt;br /&gt;
       $buffer = fgets($hcnml, 4096);&lt;br /&gt;
       fwrite($wcnml,$buffer);&lt;br /&gt;
  }&lt;br /&gt;
  fclose($hcnml);&lt;br /&gt;
  fclose($wcnml);&lt;br /&gt;
&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_update.cnml&amp;quot;, &amp;quot;w+&amp;quot;) or die('Error!');&lt;br /&gt;
  fwrite($hlast,$last_now);&lt;br /&gt;
  fclose($hlast);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= PMF =&lt;br /&gt;
* [[Regenerar los ficheros rrd]]&lt;br /&gt;
* tener en cuenta que al connectar un dispositivo por cable ponerlo en Lan o en la ubicacion que sea, sino puede que no grafique correctamente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Referencias =&lt;br /&gt;
*[http://www.guifi.net/proxy-debian manual debian de guifi.net]&lt;br /&gt;
*[http://asociacionjuvenilelcueto.info/node/156 manual de la associació Juvenil el Cueto (Rioja)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ca:Servidor_de_gràfiques]]&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas</id>
		<title>Servidor de gráficas</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas"/>
				<updated>2012-10-29T09:43:32Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: /* Como trabaja el cliente SNPServices */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= Definicion = &lt;br /&gt;
El servidor de gráficas se baas en el servicio de GUIFI llamado SNPServices.&lt;br /&gt;
El servidor SNPServices, y para ser mas exactos cliente SNPServices es un servidor linux, con php, apache, mrtg y rrdtool, no&lt;br /&gt;
necesita nada mas.&lt;br /&gt;
Le llamamos cliente porque el servidor Master SNPServices es un servidor que nos enviará informacion a nuestro servidor cliente SNPServices.&lt;br /&gt;
Aqui tienes un esquema que te hará ver claro esta definicion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El cliente SNPServices consulta al Master snpservices la lista de nodos a monitorear, con php se parsea la lista y formatea scripts mrtg y los&lt;br /&gt;
ejecuta (pings y trafico) para generar un rrd y con sonsultas http, se ejecuta un php que convierte los .rrd en imagenes y las muestra.&lt;br /&gt;
&lt;br /&gt;
El servidor WEB de guifi.net conoce la url del servidor de graficas de la zona de un nodo, y cuando visitas un nodo en la web se muestran las&lt;br /&gt;
graficas/imagenes remotas que hay en los servidores SNPServices cliente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Manuales =&lt;br /&gt;
* [[Servidor de gráficas 1]] (Debian/Ubuntu) método apt + configuración virtualhost apache&lt;br /&gt;
* [[Servidor de gráficas 2]] (Debian/Ubuntu) método dpkg&lt;br /&gt;
* [[Servidor de gráficas 3]] (Debian/Ubuntu) extendido&lt;br /&gt;
&lt;br /&gt;
= Como trabaja el cliente SNPServices =&lt;br /&gt;
El cliente SNPServices tiene varios passos a realizar para poder recopilar datos y hacer un escaneo en las direcciones cercanas.&lt;br /&gt;
&lt;br /&gt;
La lista de nodos a buscar se hace mediante cnml2mrtgcsv.php&lt;br /&gt;
Cuando tiene esta lista hace un escaneo a los nodos&lt;br /&gt;
La información que ha de buscar en los nodos se hace mediante el archivo mrtgcsv2mrtgcfg.php&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
if (file_exists(&amp;quot;/var/www/guifi/snpservices/common/config.php&amp;quot;)) {&lt;br /&gt;
   include_once(&amp;quot;/var/www/guifi/snpservices/common/config.php&amp;quot;);&lt;br /&gt;
} else {&lt;br /&gt;
  include_once(&amp;quot;/var/www/guifi/snpservices/common/config.php.template&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$now = time();&lt;br /&gt;
$mlast= @fopen(&amp;quot;/tmp/last_mrtg&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
if ($mlast)&lt;br /&gt;
  $last = fgets($mlast);&lt;br /&gt;
else&lt;br /&gt;
  $last = 0;&lt;br /&gt;
print &amp;quot;Last: &amp;quot;.date('Y/m/d H:i:s',((int)$last)+(60*60)).&amp;quot;\n&amp;quot;;&lt;br /&gt;
print &amp;quot;Now: &amp;quot;.date('Y/m/d H:i:s',(int)$now).&amp;quot;\n&amp;quot;;&lt;br /&gt;
print &amp;quot;ServerId: &amp;quot;.$SNPGraphServerId.&amp;quot;\n&amp;quot;;&lt;br /&gt;
#&lt;br /&gt;
# Looks if the files has been refreshed at least between 60 an 90 mins ago&lt;br /&gt;
# range 60..90 depends on $SNPGraphServerId mod 30&lt;br /&gt;
# if is still fresh, does not even looks to the server to check if it has changed&lt;br /&gt;
#&lt;br /&gt;
$secs = $SNPGraphServerId % 285;&lt;br /&gt;
$mins = $SNPGraphServerId % 30;&lt;br /&gt;
$nanos = $SNPGraphServerId % 10;&lt;br /&gt;
if (($last) and ($now &amp;lt; ($last +  ((60 + $mins) * 60)))) {&lt;br /&gt;
  fclose($mlast);&lt;br /&gt;
  echo &amp;quot;Still fresh.\n&amp;quot;;&lt;br /&gt;
  exit();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Local file is not fresh, so looks to the server and cheks if has changed&lt;br /&gt;
#&lt;br /&gt;
$hlastnow = @fopen($SNPDataServer_url.&amp;quot;/guifi/cnml&amp;quot;, &amp;quot;r&amp;quot;) or die('Error reading changes\n');&lt;br /&gt;
$last_now = fgets($hlastnow);&lt;br /&gt;
fclose($hlastnow);&lt;br /&gt;
$hlast= @fopen(&amp;quot;/tmp/last_update.mrtg&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
if (($hlast) and ($last_now == fgets($hlast))) {&lt;br /&gt;
  fclose($hlast);&lt;br /&gt;
  echo &amp;quot;No changes.\n&amp;quot;;&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_mrtg&amp;quot;, &amp;quot;w+&amp;quot;) or die('Error!');&lt;br /&gt;
  fwrite($hlast,$now);&lt;br /&gt;
  fclose($hlast);&lt;br /&gt;
  exit();&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
print &amp;quot;Sever CNML dated as: &amp;quot;.date('Y/m/d H:i:s',$last_now).&amp;quot;\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Server CNML has changed, so going to call the server for the new file&lt;br /&gt;
# Befoge calling, sleep $SNPGrahServerId mod 285 (4 min, 45 segs) to spread across that&lt;br /&gt;
# timeslot.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;Waiting for  &amp;quot;.$secs.&amp;quot;.&amp;quot;.$nanos.&amp;quot; seconds\n&amp;quot;;&lt;br /&gt;
time_nanosleep($secs,($nanos * 10000000));&lt;br /&gt;
print date('Y/m/d H:i:s').&amp;quot;\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$hf = @fopen($MRTGConfigSource,&amp;quot;r&amp;quot;) or die('Error reading MRTG csv input\n&amp;quot;');&lt;br /&gt;
$cf = @fopen('../data/mrtg.cfg','w+');&lt;br /&gt;
&lt;br /&gt;
fputs($cf,sprintf($rrdtool_header,$rrdimg_path,$rrdimg_path,$rrddb_path,$rrddb_path));&lt;br /&gt;
&lt;br /&gt;
while ( $buffer = fgets($hf, 4096) ) {&lt;br /&gt;
  $node_line_array = explode(&amp;quot;,&amp;quot;,$buffer);&lt;br /&gt;
  $line = $node_line_array[count($node_line_array) - 1];&lt;br /&gt;
  if ( substr($buffer,0,1) == '#' || $line == &amp;quot;Planned\n&amp;quot; || $line == &amp;quot;Dropped\n&amp;quot; || $line == &amp;quot;Building\n&amp;quot; || $line == &amp;quot;Reserved\n&amp;quot; )&lt;br /&gt;
          continue;&lt;br /&gt;
&lt;br /&gt;
  $buffer = str_replace(&amp;quot;\n&amp;quot;,&amp;quot;&amp;quot;,$buffer);&lt;br /&gt;
  $dev=explode(',',$buffer);&lt;br /&gt;
  if ( count($dev) != 5 ) {&lt;br /&gt;
                 $dev[0] = $dev[0];&lt;br /&gt;
                 $dev[1] = $dev[1];&lt;br /&gt;
                 $dev[2] = $dev[2];&lt;br /&gt;
                 $dev[3] = 'eth0;';&lt;br /&gt;
                 $dev[4] = $dev[3];&lt;br /&gt;
  }&lt;br /&gt;
 fputs($cf,sprintf($mrtg_ping_template,&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[1],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[1],&lt;br /&gt;
                 $dev[1],&lt;br /&gt;
                 $dev[2],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[2],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0],&lt;br /&gt;
                 $dev[0])&lt;br /&gt;
       );&lt;br /&gt;
  $t = explode('|',$dev[3]);&lt;br /&gt;
&lt;br /&gt;
  foreach ($t as $k=&amp;gt;$r)  {&lt;br /&gt;
    // is the snmp Index given??&lt;br /&gt;
    if (is_numeric($r)) {&lt;br /&gt;
      $rn = $dev[0].'-'.$r;&lt;br /&gt;
      $trap = $r;&lt;br /&gt;
      $wn = 'wLan';&lt;br /&gt;
    } // end if numeric snmp Index&lt;br /&gt;
    else {&lt;br /&gt;
      $rn = $dev[0].'-'.$k;&lt;br /&gt;
      // snmp is given by interface name&lt;br /&gt;
      $d = explode(';',$r);&lt;br /&gt;
      $wn = $d[1];&lt;br /&gt;
      $trap = '\\'.$d[0];&lt;br /&gt;
    }&lt;br /&gt;
    fputs($cf,sprintf($mrtg_traffic_template.&amp;quot;\n&amp;quot;,&lt;br /&gt;
                   $rn,&lt;br /&gt;
                   $trap,&lt;br /&gt;
                   $dev[2],&lt;br /&gt;
                   $rn,&lt;br /&gt;
                   $dev[2],&lt;br /&gt;
                   $dev[1],&lt;br /&gt;
                   $rn, $rn,&lt;br /&gt;
                   $wn,&lt;br /&gt;
                   $dev[1],&lt;br /&gt;
                   $rn,&lt;br /&gt;
                   $wn,&lt;br /&gt;
                   $dev[1],&lt;br /&gt;
                   $dev[1],&lt;br /&gt;
                   $wn)&lt;br /&gt;
         );&lt;br /&gt;
&lt;br /&gt;
  } // foreach interface&lt;br /&gt;
}&lt;br /&gt;
fclose($hf);&lt;br /&gt;
fclose($cf);&lt;br /&gt;
&lt;br /&gt;
$hlast= @fopen(&amp;quot;/tmp/last_update.mrtg&amp;quot;, &amp;quot;w+&amp;quot;) or die('Error!');&lt;br /&gt;
fwrite($hlast,$last_now);&lt;br /&gt;
fclose($hlast);&lt;br /&gt;
$hlast= @fopen(&amp;quot;/tmp/last_mrtg&amp;quot;, &amp;quot;w+&amp;quot;) or die('Error!');&lt;br /&gt;
fwrite($hlast,$now);&lt;br /&gt;
fclose($hlast);&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
este archivo es &lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
  $rootZone = 52771;&lt;br /&gt;
#3671;&lt;br /&gt;
&lt;br /&gt;
  $minX = 999;&lt;br /&gt;
  $minY = 999;&lt;br /&gt;
  $maxX = -999;&lt;br /&gt;
  $maxY = -999;&lt;br /&gt;
&lt;br /&gt;
  $members = array();&lt;br /&gt;
&lt;br /&gt;
  $hlastnow = @fopen(&amp;quot;http://guifi.net/guifi/refresh/maps&amp;quot;, &amp;quot;r&amp;quot;) or die('Error reading changes\n');&lt;br /&gt;
  $last_now = fgets($hlastnow);&lt;br /&gt;
  fclose($hlastnow);&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_update.cnml&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
  if (($hlast) and ($last_now == fgets($hlast))) {&lt;br /&gt;
    fclose($hlast);&lt;br /&gt;
    echo &amp;quot;No changes.\n&amp;quot;;&lt;br /&gt;
    exit();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  echo &amp;quot;Getting CNML file\n&amp;quot;;&lt;br /&gt;
  $hcnml = @fopen(&amp;quot;http://guifi.net/guifi/cnml/&amp;quot;.$rootZone.&amp;quot;/detail&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
  $wcnml = @fopen(&amp;quot;guifi.cnml&amp;quot;, &amp;quot;w+&amp;quot;);&lt;br /&gt;
  while (!feof($hcnml)) {&lt;br /&gt;
       $buffer = fgets($hcnml, 4096);&lt;br /&gt;
       fwrite($wcnml,$buffer);&lt;br /&gt;
  }&lt;br /&gt;
  fclose($hcnml);&lt;br /&gt;
  fclose($wcnml);&lt;br /&gt;
&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_update.cnml&amp;quot;, &amp;quot;w+&amp;quot;) or die('Error!');&lt;br /&gt;
  fwrite($hlast,$last_now);&lt;br /&gt;
  fclose($hlast);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= PMF =&lt;br /&gt;
* [[Regenerar los ficheros rrd]]&lt;br /&gt;
* tener en cuenta que al connectar un dispositivo por cable ponerlo en Lan o en la ubicacion que sea, sino puede que no grafique correctamente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Referencias =&lt;br /&gt;
*[http://www.guifi.net/proxy-debian manual debian de guifi.net]&lt;br /&gt;
*[http://asociacionjuvenilelcueto.info/node/156 manual de la associació Juvenil el Cueto (Rioja)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ca:Servidor_de_gràfiques]]&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas</id>
		<title>Servidor de gráficas</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas"/>
				<updated>2012-10-29T08:59:24Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: /* Como trabaja el cliente SNPServices */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= Definicion = &lt;br /&gt;
El servidor de gráficas se baas en el servicio de GUIFI llamado SNPServices.&lt;br /&gt;
El servidor SNPServices, y para ser mas exactos cliente SNPServices es un servidor linux, con php, apache, mrtg y rrdtool, no&lt;br /&gt;
necesita nada mas.&lt;br /&gt;
Le llamamos cliente porque el servidor Master SNPServices es un servidor que nos enviará informacion a nuestro servidor cliente SNPServices.&lt;br /&gt;
Aqui tienes un esquema que te hará ver claro esta definicion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El cliente SNPServices consulta al Master snpservices la lista de nodos a monitorear, con php se parsea la lista y formatea scripts mrtg y los&lt;br /&gt;
ejecuta (pings y trafico) para generar un rrd y con sonsultas http, se ejecuta un php que convierte los .rrd en imagenes y las muestra.&lt;br /&gt;
&lt;br /&gt;
El servidor WEB de guifi.net conoce la url del servidor de graficas de la zona de un nodo, y cuando visitas un nodo en la web se muestran las&lt;br /&gt;
graficas/imagenes remotas que hay en los servidores SNPServices cliente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Manuales =&lt;br /&gt;
* [[Servidor de gráficas 1]] (Debian/Ubuntu) método apt + configuración virtualhost apache&lt;br /&gt;
* [[Servidor de gráficas 2]] (Debian/Ubuntu) método dpkg&lt;br /&gt;
* [[Servidor de gráficas 3]] (Debian/Ubuntu) extendido&lt;br /&gt;
&lt;br /&gt;
= Como trabaja el cliente SNPServices =&lt;br /&gt;
El cliente SNPServices tiene varios passos a realizar para poder recopilar datos y hacer un escaneo en las direcciones cercanas.&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
  $rootZone = 52771;&lt;br /&gt;
#3671;&lt;br /&gt;
&lt;br /&gt;
  $minX = 999;&lt;br /&gt;
  $minY = 999;&lt;br /&gt;
  $maxX = -999;&lt;br /&gt;
  $maxY = -999;&lt;br /&gt;
&lt;br /&gt;
  $members = array();&lt;br /&gt;
&lt;br /&gt;
  $hlastnow = @fopen(&amp;quot;http://guifi.net/guifi/refresh/maps&amp;quot;, &amp;quot;r&amp;quot;) or die('Error reading changes\n');&lt;br /&gt;
  $last_now = fgets($hlastnow);&lt;br /&gt;
  fclose($hlastnow);&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_update.cnml&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
  if (($hlast) and ($last_now == fgets($hlast))) {&lt;br /&gt;
    fclose($hlast);&lt;br /&gt;
    echo &amp;quot;No changes.\n&amp;quot;;&lt;br /&gt;
    exit();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  echo &amp;quot;Getting CNML file\n&amp;quot;;&lt;br /&gt;
  $hcnml = @fopen(&amp;quot;http://guifi.net/guifi/cnml/&amp;quot;.$rootZone.&amp;quot;/detail&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
  $wcnml = @fopen(&amp;quot;guifi.cnml&amp;quot;, &amp;quot;w+&amp;quot;);&lt;br /&gt;
  while (!feof($hcnml)) {&lt;br /&gt;
       $buffer = fgets($hcnml, 4096);&lt;br /&gt;
       fwrite($wcnml,$buffer);&lt;br /&gt;
  }&lt;br /&gt;
  fclose($hcnml);&lt;br /&gt;
  fclose($wcnml);&lt;br /&gt;
&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_update.cnml&amp;quot;, &amp;quot;w+&amp;quot;) or die('Error!');&lt;br /&gt;
  fwrite($hlast,$last_now);&lt;br /&gt;
  fclose($hlast);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= PMF =&lt;br /&gt;
* [[Regenerar los ficheros rrd]]&lt;br /&gt;
* tener en cuenta que al connectar un dispositivo por cable ponerlo en Lan o en la ubicacion que sea, sino puede que no grafique correctamente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Referencias =&lt;br /&gt;
*[http://www.guifi.net/proxy-debian manual debian de guifi.net]&lt;br /&gt;
*[http://asociacionjuvenilelcueto.info/node/156 manual de la associació Juvenil el Cueto (Rioja)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ca:Servidor_de_gràfiques]]&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas</id>
		<title>Servidor de gráficas</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas"/>
				<updated>2012-10-29T08:58:51Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= Definicion = &lt;br /&gt;
El servidor de gráficas se baas en el servicio de GUIFI llamado SNPServices.&lt;br /&gt;
El servidor SNPServices, y para ser mas exactos cliente SNPServices es un servidor linux, con php, apache, mrtg y rrdtool, no&lt;br /&gt;
necesita nada mas.&lt;br /&gt;
Le llamamos cliente porque el servidor Master SNPServices es un servidor que nos enviará informacion a nuestro servidor cliente SNPServices.&lt;br /&gt;
Aqui tienes un esquema que te hará ver claro esta definicion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El cliente SNPServices consulta al Master snpservices la lista de nodos a monitorear, con php se parsea la lista y formatea scripts mrtg y los&lt;br /&gt;
ejecuta (pings y trafico) para generar un rrd y con sonsultas http, se ejecuta un php que convierte los .rrd en imagenes y las muestra.&lt;br /&gt;
&lt;br /&gt;
El servidor WEB de guifi.net conoce la url del servidor de graficas de la zona de un nodo, y cuando visitas un nodo en la web se muestran las&lt;br /&gt;
graficas/imagenes remotas que hay en los servidores SNPServices cliente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Manuales =&lt;br /&gt;
* [[Servidor de gráficas 1]] (Debian/Ubuntu) método apt + configuración virtualhost apache&lt;br /&gt;
* [[Servidor de gráficas 2]] (Debian/Ubuntu) método dpkg&lt;br /&gt;
* [[Servidor de gráficas 3]] (Debian/Ubuntu) extendido&lt;br /&gt;
&lt;br /&gt;
= Como trabaja el cliente SNPServices =&lt;br /&gt;
&lt;br /&gt;
= PMF =&lt;br /&gt;
* [[Regenerar los ficheros rrd]]&lt;br /&gt;
* tener en cuenta que al connectar un dispositivo por cable ponerlo en Lan o en la ubicacion que sea, sino puede que no grafique correctamente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Referencias =&lt;br /&gt;
*[http://www.guifi.net/proxy-debian manual debian de guifi.net]&lt;br /&gt;
*[http://asociacionjuvenilelcueto.info/node/156 manual de la associació Juvenil el Cueto (Rioja)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ca:Servidor_de_gràfiques]]&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/Portada</id>
		<title>Portada</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/Portada"/>
				<updated>2012-10-24T19:08:18Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: /* Servicios básicos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;width: 600px; margin: 0 auto; background-color: #fcfcfc; border: 1px solid #ccc; border-bottom: 5px groove #999999; border-right:5px groove #999999; text-align: center; padding: 0.4em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 162%; padding: 0.1em;&amp;quot;&amp;gt;[[Archivo:Logo_guifi.svg|left|56px]][[Archivo:Logo_guifi.svg|right|56px]]Bienvenid@ al wiki de '''Guifi.net'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 95%;&amp;quot;&amp;gt;Documentación sobre la red abierta, libre y neutral.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 85%;&amp;quot;&amp;gt;En estos momentos tenemos [[Especial:Estadísticas|{{NUMBEROFARTICLES}}]] [[Especial:Todas|artículos]] en español.&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f6f6f6; border:1px solid #C7D0F8; font-size:107%; -moz-border-radius:1em; -webkit-border-radius:1em;border-radius:1em;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; style=&amp;quot;padding:12px 17px 5px 17px&amp;quot; |&lt;br /&gt;
'''Guifi.net''' es de todos, participa [[conectar|conectando]] tu [[tramo de la red]] con la de los demás.&lt;br /&gt;
&lt;br /&gt;
Es un proyecto colaborativo organizado horizontalmente que agrupa tanto a personas individuales como a colectivos, empresas y administraciones. Es abierto, por lo que todo el mundo puede participar en igualdad de condiciones, en el marco de [http://guifi.net/es/ProcomunXOLN Procomún de la Red Abierta, Libre y Neutral]&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f6f6f6&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#f5e9be; border:1px solid #C7D0F8; font-size:107%; -moz-border-radius:1em; -webkit-border-radius:1em;border-radius:1em; width:20%&amp;quot; |&lt;br /&gt;
* [[Qué es un wiki]]&lt;br /&gt;
* [[Guifi.net|Más sobre Guifi.net]]&lt;br /&gt;
* [http://guifi.net/es/experiencias Casos de éxito]&lt;br /&gt;
| style=&amp;quot;text-align: right; width 30%; padding:30px&amp;quot; |''La documentación de guifi.net contiene los documentos de referencia para usuarios nuevos, experimentados y desarrolladores. Sé libre [[Qué es un wiki|de editar esta wiki]] para mejorar su contenido.''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;div style=&amp;quot; text-align: center&amp;quot;&amp;gt;Contacta: [http://guifi.net/es/forum/231 Foros] '''|''' [http://lists.guifi.net Listas de correo] '''|''' [http://irc.guifi.net/?channels=guifi Chat]&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| id=&amp;quot;mp-upper&amp;quot; style=&amp;quot;width: 100%; margin:6px 0 0 0; background:none; border-spacing: 0px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:50%; background:#FFFFE0; border:1px solid #EECFA1; padding:10px; margin-bottom:7px; vertical-align:top; -moz-border-radius:1em; -webkit-border-radius:1em; border-radius:1em;&amp;quot; | &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;mp-tfa&amp;quot;&amp;gt;&amp;lt;!--Selector per a [[meta:Mobile]]--&amp;gt;&lt;br /&gt;
{| id=&amp;quot;mp-left&amp;quot; style=&amp;quot;vertical-align:top; background:#FFFFE0; border-spacing: 0px;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#FFDEAD; border:1px solid #EECFA1; border-right:0px; padding:0px; font-size:150%; vertical-align:middle; font-weight:normal; width:100%;&amp;quot; | Cómo conectarse a Guifi.net&lt;br /&gt;
! style=&amp;quot;background:#a5e085; border:1px solid #99CC33; border-left:0px; padding:0px; vertical-align:middle;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| colspan=2 style=&amp;quot;color:#000; background:#FFFFE0; padding:15px 5px&amp;quot; | &amp;lt;div id=&amp;quot;mp-itn&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:left; font-size:95%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[tres pasos|Cómo dar de alta y enlazar un nodo]]&lt;br /&gt;
* [[Elige el material]]&lt;br /&gt;
* [[Configura tu ordenador]]&lt;br /&gt;
* [[Buenas Prácticas|Código de buenas prácticas]]&lt;br /&gt;
&lt;br /&gt;
|}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;border:1px solid transparent;&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:50%;background:#f5fffa;border:1px solid #99CC33;padding:10px;margin-bottom:7px; vertical-align:top;-moz-border-radius:1em;-webkit-border-radius:1em;border-radius:1em; &amp;quot; | &lt;br /&gt;
&amp;lt;div id=&amp;quot;mp-itn&amp;quot;&amp;gt;&lt;br /&gt;
{| id=&amp;quot;mp-left&amp;quot; style=&amp;quot;vertical-align:top; background:#f5fffa; border-spacing: 0px;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#a5e085; border:1px solid #99CC33; border-right:0px; padding:0px; font-size:150%; vertical-align:middle; font-weight:normal; width:100%;&amp;quot; | Supernodos e islas&lt;br /&gt;
! style=&amp;quot;background:#a5e085; border:1px solid #99CC33; border-left:0px; padding:0px; vertical-align:middle;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| colspan=2 style=&amp;quot;color:#000; background:#f5fffa; padding:15px 5px&amp;quot; |&amp;lt;div id=&amp;quot;mp-itn&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:left; font-size:95%;&amp;quot;&amp;gt;&lt;br /&gt;
* [[Empezar una isla desde 0|Comenzar una isla desde cero]]&lt;br /&gt;
* [[Crear un supernodo]]&lt;br /&gt;
* [[Buenas Prácticas|Código de buenas prácticas]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| id=&amp;quot;mp-upper&amp;quot; style=&amp;quot;width: 100%; margin:6px 0 0 0; background:none; border-spacing: 0px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:50%; style=&amp;quot;background:#f5faff;border:1px solid #cedff2;padding:10px;margin-bottom:7px; vertical-align:top;-moz-border-radius:1em;-webkit-border-radius:1em;border-radius:1em; &amp;quot; | &lt;br /&gt;
&amp;lt;div id=&amp;quot;mp-dyk&amp;quot;&amp;gt;&lt;br /&gt;
{| id=&amp;quot;mp-left&amp;quot; style=&amp;quot;vertical-align:top; background:#f5faff; border-spacing: 0px;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#cedff2; border:1px solid #cedff2; border-right:0px; padding:0px; font-size:150%; vertical-align:middle; font-weight:normal; width:100%;&amp;quot; | Guifi.net ++&lt;br /&gt;
! style=&amp;quot;background:#cedff2; border:1px solid #cedff2; border-left:0px; padding:0px; vertical-align:middle;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| colspan=2 style=&amp;quot;color:#000; background:#f5fffa; padding:15px 5px&amp;quot; |&amp;lt;div id=&amp;quot;mp-itn&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:left; font-size:95%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[Legal]] ==&lt;br /&gt;
* [[Ayuntamientos]] / [[Anexo:Guifi.net en Ayuntamientos]]&lt;br /&gt;
* [[Associación|Constitución de una asociación]]&lt;br /&gt;
* [[Legislaciones|Legislaciones Países]]&lt;br /&gt;
* [[FAQ_Legal|FAQ]]&lt;br /&gt;
&lt;br /&gt;
== Red ==&lt;br /&gt;
=== Los básicos en la web ===&lt;br /&gt;
* [[Zona|Crear y modificar una zona]]&lt;br /&gt;
* [[Añadir_un_nodo_de_guifi.net|Añadir un nodo de guifi.net]]&lt;br /&gt;
* [[Servicios|Crear servicios y vincularlos en los servidores]]&lt;br /&gt;
* [[Herramientas|Herramientas (localización de IPs y MACs, estadísticas, mapas de enrutamiento, etc.)]]&lt;br /&gt;
&lt;br /&gt;
=== Infraestructura ===&lt;br /&gt;
* [[Crear_un_supernodo|Montaje de supernodos]]&lt;br /&gt;
* [[Filtros de red]]&lt;br /&gt;
* [[Enlaces virtuales]]&lt;br /&gt;
* [[Herramienta para buscar rangos de IPs libres]]&lt;br /&gt;
* [[Nanostations: Modificando configuración por consola]]&lt;br /&gt;
&lt;br /&gt;
=== Mesh ===&lt;br /&gt;
* [[Alix+GSF|ALIX + Conectarse a la nube de gracia con mesh]]&lt;br /&gt;
&lt;br /&gt;
=== Enrutamientos y conceptos de redes ===&lt;br /&gt;
{{div col|cols=2}}&lt;br /&gt;
* [[Enrutamientos]]&lt;br /&gt;
* [[Peerings]]&lt;br /&gt;
* [[IPv4]]&lt;br /&gt;
* [[IPv6]]&lt;br /&gt;
* [[Criterios de asignación de direcciones IPv4]]&lt;br /&gt;
* [[ARP]]&lt;br /&gt;
* [[Cables_UTP|Cables UTP]]&lt;br /&gt;
{{div end}}&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
{{div col|cols=2}}&lt;br /&gt;
* [[Cómo se vertebra la red: Troncal, puntos de acceso y conexiones simples]]&lt;br /&gt;
* [[La seguridad en la red abierta]]&lt;br /&gt;
* [[Aplicaciones | Aplicaciones de guifi.net]]&lt;br /&gt;
* [[Recursos externos]]&lt;br /&gt;
* [[Instalar firmware Ubiquiti Rocket M5]]&lt;br /&gt;
{{div end}}&lt;br /&gt;
&lt;br /&gt;
== Sistemas ==&lt;br /&gt;
* [[Distribución guinux]]&lt;br /&gt;
* [[Servidor compacto con una routerstation]]&lt;br /&gt;
&lt;br /&gt;
=== Servicios básicos ===&lt;br /&gt;
{{div col|cols=2}}&lt;br /&gt;
* [[Configurar Repositorio APT guifi]]&lt;br /&gt;
* [[Servidor Proxy]]&lt;br /&gt;
* [[Servidor de gráficas]]&lt;br /&gt;
* [[SNPservices]]&lt;br /&gt;
* [[Servidor DNS]]&lt;br /&gt;
* [[Servidor Reloj|Servidor de Reloj (NTP)]]&lt;br /&gt;
* [[Salida a Internet]] (aka proxy)&lt;br /&gt;
{{div end}}&lt;br /&gt;
&lt;br /&gt;
=== Servicios de compartición de ficheros ===&lt;br /&gt;
{{div col|cols=2}}&lt;br /&gt;
* [[Servidor FTP]]&lt;br /&gt;
* [[Servidor Peer 2 Peer]]&lt;br /&gt;
* [[Servidor DCC]]&lt;br /&gt;
{{div end}}&lt;br /&gt;
&lt;br /&gt;
=== Servicios de mensajería ===&lt;br /&gt;
{{div col|cols=2}}&lt;br /&gt;
* [[Servidor de Correo]]&lt;br /&gt;
* [[Webmail]]&lt;br /&gt;
* [[Servidor Jabber]]&lt;br /&gt;
* [[Servidor IRC]]&lt;br /&gt;
* [[Mailman]]&lt;br /&gt;
{{div end}}&lt;br /&gt;
&lt;br /&gt;
=== Servicios de Voz y Vídeo ===&lt;br /&gt;
{{div col|cols=2}}&lt;br /&gt;
* [[VoIP|Servidor de VeuIP (VoIP)]]&lt;br /&gt;
* [[Servidor Radio Streaming]]&lt;br /&gt;
{{div end}}&lt;br /&gt;
&lt;br /&gt;
=== Otros Servicios ===&lt;br /&gt;
{{div col|cols=2}}&lt;br /&gt;
* [[LDAP|Servidor LDAP]]&lt;br /&gt;
* [[Apache|Servidor web Apache]]&lt;br /&gt;
* [[Servidor Repositorio Linux]]&lt;br /&gt;
* [[Servidor Repositorio Linux (Cache)]]&lt;br /&gt;
* [[Servidor Iperf]]&lt;br /&gt;
* [[Servidor repositorio subversion]]&lt;br /&gt;
* [[DHCP|Servidor DHCP]]&lt;br /&gt;
* [[MySQL]] (Bases de Datos)&lt;br /&gt;
* [[Proxmox]] (virtualitzación)&lt;br /&gt;
* [[Cacti]] (monitorización)&lt;br /&gt;
* [[Clamav]] (antivirus con GNU/Linux)&lt;br /&gt;
* [[Trac]] (sistema de gestión de tiquets)&lt;br /&gt;
* [[Monitor]] (Monitorización de la red distribuida)&lt;br /&gt;
{{div end}}&lt;br /&gt;
&lt;br /&gt;
=== Sistema ===&lt;br /&gt;
{{div col|cols=2}}&lt;br /&gt;
* [[ACPI]]&lt;br /&gt;
* [[Bridges_con_Linux|Bridges con GNU/Linux]]&lt;br /&gt;
* [[Chroot]]&lt;br /&gt;
* [[Corkscrew]]&lt;br /&gt;
{{div end}}&lt;br /&gt;
&lt;br /&gt;
== Estandares de transmisión de datos y organizaciones colaboradoras ==&lt;br /&gt;
{{div col|cols=2}}&lt;br /&gt;
* [http://es.wikipedia.org/wiki/IEEE_802.11 IEEE 802.11]&lt;br /&gt;
* [http://es.wikipedia.org/wiki/Multimedia_over_Coax_Alliance Multimedia over Coax Alliance]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/HomePNA HomePNA]&lt;br /&gt;
* [[Aprovechar el cable de antena de televisión]]&lt;br /&gt;
{{div end}}&lt;br /&gt;
&lt;br /&gt;
== Instaladores ==&lt;br /&gt;
{{div col|cols=2}}&lt;br /&gt;
* [[Pararrayos]]&lt;br /&gt;
* [[Aprovechar el cable de antena de televisión]]&lt;br /&gt;
* [[Presupuestos]]&lt;br /&gt;
* [http://guifi.net/ca/node/12486 Comunidad de vecinos, caso de ejemplo]&lt;br /&gt;
* [[Reinicio remoto de nodos]]&lt;br /&gt;
{{div end}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Desarrolladores ==&lt;br /&gt;
{{div col|cols=2}}&lt;br /&gt;
* [[Preparando el entorno de desarrollo]]&lt;br /&gt;
* [[Manual editor wiki]]&lt;br /&gt;
* [http://wiki.guifi.net/wiki/Trac Trac de Guifi.net]&lt;br /&gt;
* [[Actualizaciones módulos drupal]]&lt;br /&gt;
* [[Mapas de nodos en la web]]&lt;br /&gt;
* [http://gitorious.org/guifi Repositorios del código del proyecto guifi.net]&lt;br /&gt;
* [[Mapa del código]]&lt;br /&gt;
* [[API de Guifi]]&lt;br /&gt;
* [[CNML]]&lt;br /&gt;
* [[Empotrar_mapa_de_guifi|Empotrar el mapa de Guifi-Google Maps en una web]]&lt;br /&gt;
* [[Unsóloclic]]&lt;br /&gt;
* [[:Categoría:router|Routers]]&lt;br /&gt;
* [[:Categoría:Telefonía móvil|Telefonía móvil sobre guifi.net]]&lt;br /&gt;
{{div end}}&lt;br /&gt;
&lt;br /&gt;
== Diseñadores ==&lt;br /&gt;
{{div col|cols=2}}&lt;br /&gt;
* [[Logos]]&lt;br /&gt;
* [[Maquetación de las distintas páginas web]]&lt;br /&gt;
* [[Usabilidad]]&lt;br /&gt;
* [[Presentaciones de guifi.net]]&lt;br /&gt;
{{div end}}&lt;br /&gt;
&lt;br /&gt;
== Desarrollo colectivo de la red ==&lt;br /&gt;
{{div col|cols=2}}&lt;br /&gt;
* [[Cursos]]&lt;br /&gt;
* [[Necesidades]]&lt;br /&gt;
{{div end}}&lt;br /&gt;
&lt;br /&gt;
== Glosario ==&lt;br /&gt;
* [[Términos usados habitualmente]]&lt;br /&gt;
* [[Guia Rápida de Guifi.net]]&lt;br /&gt;
* [[Preguntas Frecuentes]]&lt;br /&gt;
* [http://guifi.net/es/ESDocs Documentos basados en la web de guifi.net] antigua &amp;quot;ComEsFa&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Accesos Rápidos =&lt;br /&gt;
* [http://planet.guifi.net Planet]&lt;br /&gt;
* [http://guifi.net/es/ProcomunXOLN Procomún XOLN (Licencia de la red)]&lt;br /&gt;
* [http://guifi.net/es/maps Mapa guifi]&lt;br /&gt;
* [http://guifi.net/es/grups Webs Regionales]&lt;br /&gt;
* [http://trac.guifi.net Reporta Errores de la web]&lt;br /&gt;
* [http://fundacio.guifi.net Fundación]&lt;br /&gt;
* [http://lists.guifi.net Listas de Correo]&lt;br /&gt;
&lt;br /&gt;
[[ca:Portada]]&lt;br /&gt;
[[en:Main Page]]&lt;br /&gt;
[[eu:Azala]]&lt;br /&gt;
[[fr:Accueil]]&lt;br /&gt;
[[gl:Portada]]&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/Portada</id>
		<title>Portada</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/Portada"/>
				<updated>2012-10-24T19:07:44Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: /* Servicios básicos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;width: 600px; margin: 0 auto; background-color: #fcfcfc; border: 1px solid #ccc; border-bottom: 5px groove #999999; border-right:5px groove #999999; text-align: center; padding: 0.4em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 162%; padding: 0.1em;&amp;quot;&amp;gt;[[Archivo:Logo_guifi.svg|left|56px]][[Archivo:Logo_guifi.svg|right|56px]]Bienvenid@ al wiki de '''Guifi.net'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 95%;&amp;quot;&amp;gt;Documentación sobre la red abierta, libre y neutral.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 85%;&amp;quot;&amp;gt;En estos momentos tenemos [[Especial:Estadísticas|{{NUMBEROFARTICLES}}]] [[Especial:Todas|artículos]] en español.&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f6f6f6; border:1px solid #C7D0F8; font-size:107%; -moz-border-radius:1em; -webkit-border-radius:1em;border-radius:1em;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; style=&amp;quot;padding:12px 17px 5px 17px&amp;quot; |&lt;br /&gt;
'''Guifi.net''' es de todos, participa [[conectar|conectando]] tu [[tramo de la red]] con la de los demás.&lt;br /&gt;
&lt;br /&gt;
Es un proyecto colaborativo organizado horizontalmente que agrupa tanto a personas individuales como a colectivos, empresas y administraciones. Es abierto, por lo que todo el mundo puede participar en igualdad de condiciones, en el marco de [http://guifi.net/es/ProcomunXOLN Procomún de la Red Abierta, Libre y Neutral]&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f6f6f6&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:#f5e9be; border:1px solid #C7D0F8; font-size:107%; -moz-border-radius:1em; -webkit-border-radius:1em;border-radius:1em; width:20%&amp;quot; |&lt;br /&gt;
* [[Qué es un wiki]]&lt;br /&gt;
* [[Guifi.net|Más sobre Guifi.net]]&lt;br /&gt;
* [http://guifi.net/es/experiencias Casos de éxito]&lt;br /&gt;
| style=&amp;quot;text-align: right; width 30%; padding:30px&amp;quot; |''La documentación de guifi.net contiene los documentos de referencia para usuarios nuevos, experimentados y desarrolladores. Sé libre [[Qué es un wiki|de editar esta wiki]] para mejorar su contenido.''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;div style=&amp;quot; text-align: center&amp;quot;&amp;gt;Contacta: [http://guifi.net/es/forum/231 Foros] '''|''' [http://lists.guifi.net Listas de correo] '''|''' [http://irc.guifi.net/?channels=guifi Chat]&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| id=&amp;quot;mp-upper&amp;quot; style=&amp;quot;width: 100%; margin:6px 0 0 0; background:none; border-spacing: 0px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:50%; background:#FFFFE0; border:1px solid #EECFA1; padding:10px; margin-bottom:7px; vertical-align:top; -moz-border-radius:1em; -webkit-border-radius:1em; border-radius:1em;&amp;quot; | &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;mp-tfa&amp;quot;&amp;gt;&amp;lt;!--Selector per a [[meta:Mobile]]--&amp;gt;&lt;br /&gt;
{| id=&amp;quot;mp-left&amp;quot; style=&amp;quot;vertical-align:top; background:#FFFFE0; border-spacing: 0px;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#FFDEAD; border:1px solid #EECFA1; border-right:0px; padding:0px; font-size:150%; vertical-align:middle; font-weight:normal; width:100%;&amp;quot; | Cómo conectarse a Guifi.net&lt;br /&gt;
! style=&amp;quot;background:#a5e085; border:1px solid #99CC33; border-left:0px; padding:0px; vertical-align:middle;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| colspan=2 style=&amp;quot;color:#000; background:#FFFFE0; padding:15px 5px&amp;quot; | &amp;lt;div id=&amp;quot;mp-itn&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:left; font-size:95%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[tres pasos|Cómo dar de alta y enlazar un nodo]]&lt;br /&gt;
* [[Elige el material]]&lt;br /&gt;
* [[Configura tu ordenador]]&lt;br /&gt;
* [[Buenas Prácticas|Código de buenas prácticas]]&lt;br /&gt;
&lt;br /&gt;
|}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;border:1px solid transparent;&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:50%;background:#f5fffa;border:1px solid #99CC33;padding:10px;margin-bottom:7px; vertical-align:top;-moz-border-radius:1em;-webkit-border-radius:1em;border-radius:1em; &amp;quot; | &lt;br /&gt;
&amp;lt;div id=&amp;quot;mp-itn&amp;quot;&amp;gt;&lt;br /&gt;
{| id=&amp;quot;mp-left&amp;quot; style=&amp;quot;vertical-align:top; background:#f5fffa; border-spacing: 0px;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#a5e085; border:1px solid #99CC33; border-right:0px; padding:0px; font-size:150%; vertical-align:middle; font-weight:normal; width:100%;&amp;quot; | Supernodos e islas&lt;br /&gt;
! style=&amp;quot;background:#a5e085; border:1px solid #99CC33; border-left:0px; padding:0px; vertical-align:middle;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| colspan=2 style=&amp;quot;color:#000; background:#f5fffa; padding:15px 5px&amp;quot; |&amp;lt;div id=&amp;quot;mp-itn&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:left; font-size:95%;&amp;quot;&amp;gt;&lt;br /&gt;
* [[Empezar una isla desde 0|Comenzar una isla desde cero]]&lt;br /&gt;
* [[Crear un supernodo]]&lt;br /&gt;
* [[Buenas Prácticas|Código de buenas prácticas]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| id=&amp;quot;mp-upper&amp;quot; style=&amp;quot;width: 100%; margin:6px 0 0 0; background:none; border-spacing: 0px;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:50%; style=&amp;quot;background:#f5faff;border:1px solid #cedff2;padding:10px;margin-bottom:7px; vertical-align:top;-moz-border-radius:1em;-webkit-border-radius:1em;border-radius:1em; &amp;quot; | &lt;br /&gt;
&amp;lt;div id=&amp;quot;mp-dyk&amp;quot;&amp;gt;&lt;br /&gt;
{| id=&amp;quot;mp-left&amp;quot; style=&amp;quot;vertical-align:top; background:#f5faff; border-spacing: 0px;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#cedff2; border:1px solid #cedff2; border-right:0px; padding:0px; font-size:150%; vertical-align:middle; font-weight:normal; width:100%;&amp;quot; | Guifi.net ++&lt;br /&gt;
! style=&amp;quot;background:#cedff2; border:1px solid #cedff2; border-left:0px; padding:0px; vertical-align:middle;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| colspan=2 style=&amp;quot;color:#000; background:#f5fffa; padding:15px 5px&amp;quot; |&amp;lt;div id=&amp;quot;mp-itn&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:left; font-size:95%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[Legal]] ==&lt;br /&gt;
* [[Ayuntamientos]] / [[Anexo:Guifi.net en Ayuntamientos]]&lt;br /&gt;
* [[Associación|Constitución de una asociación]]&lt;br /&gt;
* [[Legislaciones|Legislaciones Países]]&lt;br /&gt;
* [[FAQ_Legal|FAQ]]&lt;br /&gt;
&lt;br /&gt;
== Red ==&lt;br /&gt;
=== Los básicos en la web ===&lt;br /&gt;
* [[Zona|Crear y modificar una zona]]&lt;br /&gt;
* [[Añadir_un_nodo_de_guifi.net|Añadir un nodo de guifi.net]]&lt;br /&gt;
* [[Servicios|Crear servicios y vincularlos en los servidores]]&lt;br /&gt;
* [[Herramientas|Herramientas (localización de IPs y MACs, estadísticas, mapas de enrutamiento, etc.)]]&lt;br /&gt;
&lt;br /&gt;
=== Infraestructura ===&lt;br /&gt;
* [[Crear_un_supernodo|Montaje de supernodos]]&lt;br /&gt;
* [[Filtros de red]]&lt;br /&gt;
* [[Enlaces virtuales]]&lt;br /&gt;
* [[Herramienta para buscar rangos de IPs libres]]&lt;br /&gt;
* [[Nanostations: Modificando configuración por consola]]&lt;br /&gt;
&lt;br /&gt;
=== Mesh ===&lt;br /&gt;
* [[Alix+GSF|ALIX + Conectarse a la nube de gracia con mesh]]&lt;br /&gt;
&lt;br /&gt;
=== Enrutamientos y conceptos de redes ===&lt;br /&gt;
{{div col|cols=2}}&lt;br /&gt;
* [[Enrutamientos]]&lt;br /&gt;
* [[Peerings]]&lt;br /&gt;
* [[IPv4]]&lt;br /&gt;
* [[IPv6]]&lt;br /&gt;
* [[Criterios de asignación de direcciones IPv4]]&lt;br /&gt;
* [[ARP]]&lt;br /&gt;
* [[Cables_UTP|Cables UTP]]&lt;br /&gt;
{{div end}}&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
{{div col|cols=2}}&lt;br /&gt;
* [[Cómo se vertebra la red: Troncal, puntos de acceso y conexiones simples]]&lt;br /&gt;
* [[La seguridad en la red abierta]]&lt;br /&gt;
* [[Aplicaciones | Aplicaciones de guifi.net]]&lt;br /&gt;
* [[Recursos externos]]&lt;br /&gt;
* [[Instalar firmware Ubiquiti Rocket M5]]&lt;br /&gt;
{{div end}}&lt;br /&gt;
&lt;br /&gt;
== Sistemas ==&lt;br /&gt;
* [[Distribución guinux]]&lt;br /&gt;
* [[Servidor compacto con una routerstation]]&lt;br /&gt;
&lt;br /&gt;
=== Servicios básicos ===&lt;br /&gt;
{{div col|cols=2}}&lt;br /&gt;
* [[Configurar Repositorio APT guifi]]&lt;br /&gt;
* [[Servidor Proxy]]&lt;br /&gt;
* [[Servidor de gráficas]]&lt;br /&gt;
* [[SNPServices]]&lt;br /&gt;
* [[Servidor DNS]]&lt;br /&gt;
* [[Servidor Reloj|Servidor de Reloj (NTP)]]&lt;br /&gt;
* [[Salida a Internet]] (aka proxy)&lt;br /&gt;
{{div end}}&lt;br /&gt;
&lt;br /&gt;
=== Servicios de compartición de ficheros ===&lt;br /&gt;
{{div col|cols=2}}&lt;br /&gt;
* [[Servidor FTP]]&lt;br /&gt;
* [[Servidor Peer 2 Peer]]&lt;br /&gt;
* [[Servidor DCC]]&lt;br /&gt;
{{div end}}&lt;br /&gt;
&lt;br /&gt;
=== Servicios de mensajería ===&lt;br /&gt;
{{div col|cols=2}}&lt;br /&gt;
* [[Servidor de Correo]]&lt;br /&gt;
* [[Webmail]]&lt;br /&gt;
* [[Servidor Jabber]]&lt;br /&gt;
* [[Servidor IRC]]&lt;br /&gt;
* [[Mailman]]&lt;br /&gt;
{{div end}}&lt;br /&gt;
&lt;br /&gt;
=== Servicios de Voz y Vídeo ===&lt;br /&gt;
{{div col|cols=2}}&lt;br /&gt;
* [[VoIP|Servidor de VeuIP (VoIP)]]&lt;br /&gt;
* [[Servidor Radio Streaming]]&lt;br /&gt;
{{div end}}&lt;br /&gt;
&lt;br /&gt;
=== Otros Servicios ===&lt;br /&gt;
{{div col|cols=2}}&lt;br /&gt;
* [[LDAP|Servidor LDAP]]&lt;br /&gt;
* [[Apache|Servidor web Apache]]&lt;br /&gt;
* [[Servidor Repositorio Linux]]&lt;br /&gt;
* [[Servidor Repositorio Linux (Cache)]]&lt;br /&gt;
* [[Servidor Iperf]]&lt;br /&gt;
* [[Servidor repositorio subversion]]&lt;br /&gt;
* [[DHCP|Servidor DHCP]]&lt;br /&gt;
* [[MySQL]] (Bases de Datos)&lt;br /&gt;
* [[Proxmox]] (virtualitzación)&lt;br /&gt;
* [[Cacti]] (monitorización)&lt;br /&gt;
* [[Clamav]] (antivirus con GNU/Linux)&lt;br /&gt;
* [[Trac]] (sistema de gestión de tiquets)&lt;br /&gt;
* [[Monitor]] (Monitorización de la red distribuida)&lt;br /&gt;
{{div end}}&lt;br /&gt;
&lt;br /&gt;
=== Sistema ===&lt;br /&gt;
{{div col|cols=2}}&lt;br /&gt;
* [[ACPI]]&lt;br /&gt;
* [[Bridges_con_Linux|Bridges con GNU/Linux]]&lt;br /&gt;
* [[Chroot]]&lt;br /&gt;
* [[Corkscrew]]&lt;br /&gt;
{{div end}}&lt;br /&gt;
&lt;br /&gt;
== Estandares de transmisión de datos y organizaciones colaboradoras ==&lt;br /&gt;
{{div col|cols=2}}&lt;br /&gt;
* [http://es.wikipedia.org/wiki/IEEE_802.11 IEEE 802.11]&lt;br /&gt;
* [http://es.wikipedia.org/wiki/Multimedia_over_Coax_Alliance Multimedia over Coax Alliance]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/HomePNA HomePNA]&lt;br /&gt;
* [[Aprovechar el cable de antena de televisión]]&lt;br /&gt;
{{div end}}&lt;br /&gt;
&lt;br /&gt;
== Instaladores ==&lt;br /&gt;
{{div col|cols=2}}&lt;br /&gt;
* [[Pararrayos]]&lt;br /&gt;
* [[Aprovechar el cable de antena de televisión]]&lt;br /&gt;
* [[Presupuestos]]&lt;br /&gt;
* [http://guifi.net/ca/node/12486 Comunidad de vecinos, caso de ejemplo]&lt;br /&gt;
* [[Reinicio remoto de nodos]]&lt;br /&gt;
{{div end}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Desarrolladores ==&lt;br /&gt;
{{div col|cols=2}}&lt;br /&gt;
* [[Preparando el entorno de desarrollo]]&lt;br /&gt;
* [[Manual editor wiki]]&lt;br /&gt;
* [http://wiki.guifi.net/wiki/Trac Trac de Guifi.net]&lt;br /&gt;
* [[Actualizaciones módulos drupal]]&lt;br /&gt;
* [[Mapas de nodos en la web]]&lt;br /&gt;
* [http://gitorious.org/guifi Repositorios del código del proyecto guifi.net]&lt;br /&gt;
* [[Mapa del código]]&lt;br /&gt;
* [[API de Guifi]]&lt;br /&gt;
* [[CNML]]&lt;br /&gt;
* [[Empotrar_mapa_de_guifi|Empotrar el mapa de Guifi-Google Maps en una web]]&lt;br /&gt;
* [[Unsóloclic]]&lt;br /&gt;
* [[:Categoría:router|Routers]]&lt;br /&gt;
* [[:Categoría:Telefonía móvil|Telefonía móvil sobre guifi.net]]&lt;br /&gt;
{{div end}}&lt;br /&gt;
&lt;br /&gt;
== Diseñadores ==&lt;br /&gt;
{{div col|cols=2}}&lt;br /&gt;
* [[Logos]]&lt;br /&gt;
* [[Maquetación de las distintas páginas web]]&lt;br /&gt;
* [[Usabilidad]]&lt;br /&gt;
* [[Presentaciones de guifi.net]]&lt;br /&gt;
{{div end}}&lt;br /&gt;
&lt;br /&gt;
== Desarrollo colectivo de la red ==&lt;br /&gt;
{{div col|cols=2}}&lt;br /&gt;
* [[Cursos]]&lt;br /&gt;
* [[Necesidades]]&lt;br /&gt;
{{div end}}&lt;br /&gt;
&lt;br /&gt;
== Glosario ==&lt;br /&gt;
* [[Términos usados habitualmente]]&lt;br /&gt;
* [[Guia Rápida de Guifi.net]]&lt;br /&gt;
* [[Preguntas Frecuentes]]&lt;br /&gt;
* [http://guifi.net/es/ESDocs Documentos basados en la web de guifi.net] antigua &amp;quot;ComEsFa&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Accesos Rápidos =&lt;br /&gt;
* [http://planet.guifi.net Planet]&lt;br /&gt;
* [http://guifi.net/es/ProcomunXOLN Procomún XOLN (Licencia de la red)]&lt;br /&gt;
* [http://guifi.net/es/maps Mapa guifi]&lt;br /&gt;
* [http://guifi.net/es/grups Webs Regionales]&lt;br /&gt;
* [http://trac.guifi.net Reporta Errores de la web]&lt;br /&gt;
* [http://fundacio.guifi.net Fundación]&lt;br /&gt;
* [http://lists.guifi.net Listas de Correo]&lt;br /&gt;
&lt;br /&gt;
[[ca:Portada]]&lt;br /&gt;
[[en:Main Page]]&lt;br /&gt;
[[eu:Azala]]&lt;br /&gt;
[[fr:Accueil]]&lt;br /&gt;
[[gl:Portada]]&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas</id>
		<title>Servidor de gráficas</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas"/>
				<updated>2012-10-24T16:18:31Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: agrego definicion&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= Definicion = &lt;br /&gt;
El servidor de gráficas se baas en el servicio de GUIFI llamado SNPServices.&lt;br /&gt;
El servidor SNPServices, y para ser mas exactos cliente SNPServices es un servidor linux, con php, apache, mrtg y rrdtool, no&lt;br /&gt;
necesita nada mas.&lt;br /&gt;
Le llamamos cliente porque el servidor Master SNPServices es un servidor que nos enviará informacion a nuestro servidor cliente SNPServices.&lt;br /&gt;
Aqui tienes un esquema que te hará ver claro esta definicion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El cliente SNPServices consulta al Master snpservices la lista de nodos a monitorear, con php se parsea la lista y formatea scripts mrtg y los&lt;br /&gt;
ejecuta (pings y trafico) para generar un rrd y con sonsultas http, se ejecuta un php que convierte los .rrd en imagenes y las muestra.&lt;br /&gt;
&lt;br /&gt;
El servidor WEB de guifi.net conoce la url del servidor de graficas de la zona de un nodo, y cuando visitas un nodo en la web se muestran las&lt;br /&gt;
graficas/imagenes remotas que hay en los servidores SNPServices cliente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Manuales =&lt;br /&gt;
* [[Servidor de gráficas 1]] (Debian/Ubuntu) método apt + configuración virtualhost apache&lt;br /&gt;
* [[Servidor de gráficas 2]] (Debian/Ubuntu) método dpkg&lt;br /&gt;
* [[Servidor de gráficas 3]] (Debian/Ubuntu) extendido&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= PMF =&lt;br /&gt;
* [[Regenerar los ficheros rrd]]&lt;br /&gt;
* tener en cuenta que al connectar un dispositivo por cable ponerlo en Lan o en la ubicacion que sea, sino puede que no grafique correctamente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Referencias =&lt;br /&gt;
*[http://www.guifi.net/proxy-debian manual debian de guifi.net]&lt;br /&gt;
*[http://asociacionjuvenilelcueto.info/node/156 manual de la associació Juvenil el Cueto (Rioja)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ca:Servidor_de_gràfiques]]&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/Monitor</id>
		<title>Monitor</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/Monitor"/>
				<updated>2012-10-24T15:40:17Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;El sistema actual de monitoritzacio es el seguent:&lt;br /&gt;
=== Com funciona ===&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Esquema monitoritzcio.png]]&lt;br /&gt;
es.wiki.guifi.net/wiki/SNPserviceshttp://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas&lt;br /&gt;
La web te un llistat de tots els nodes en una base de dades. Gracies a aquesta informacio es genera un document XML que s’anomena CNML amb el qual es defineix quin tipus de node es, la localitzacio..etc..&lt;br /&gt;
&lt;br /&gt;
L’eina SNPServices fa servir aquest CNML per poder transferir informacio als supernodes repartits per la xarxa.  &lt;br /&gt;
En aquesta imatge veiem un supernode.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Guifi Seminari.png]]&lt;br /&gt;
&lt;br /&gt;
Imatge de http://guifi.net/ca/seminari&lt;br /&gt;
&lt;br /&gt;
Aquests supernodes solen ser servidors de gràfics. Desde els supernodes es fan servir eines SNMP com ping a tots els nodes i es recull una informacio. Aquesta informacio es dibuixa en un gràfic gracies a MRTG i rrdtool.&lt;br /&gt;
&lt;br /&gt;
Tots els nodes tenen assitnat un servidor de gràfiques. Si no te un directament agafa el superior jerarquicament fins arribar al node arrel que es la web.&lt;br /&gt;
&lt;br /&gt;
El supernode genera gràfics amb els resultats i els enmagatzema en local.&lt;br /&gt;
Desde la web es pot consultar aquesta informacio&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafic_MRTG.jpeg]]&lt;br /&gt;
&lt;br /&gt;
grafic MRTG obtingut de https://roure.act.uji.es/wiki/public/guifinet/cursoinstaladoresguifi2011/servidoresgnulinux/start&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Actualment el snpservices realitza les funcions de: grafica, disponibilidad,estadisitica, traceroute, liveping http://ausa.guifi.net/snpservices/&lt;br /&gt;
&lt;br /&gt;
El conjunt d el’infromacio el publica a la web com es mostra en aquesta imatge&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Info de SNMP.png]]&lt;br /&gt;
&lt;br /&gt;
Imatge de http://guifi.net/en/node/2436/view/availability&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Entrem mes a fons ===&lt;br /&gt;
&lt;br /&gt;
Aqui pots apendre com funciona el servei SNPServices mes a fons&lt;br /&gt;
http://es.wiki.guifi.net/wiki/SNPservices&lt;br /&gt;
&lt;br /&gt;
Aqui pots apendre com funciona un servidor de gràfics&lt;br /&gt;
http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/SNPServices</id>
		<title>SNPServices</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/SNPServices"/>
				<updated>2012-10-24T15:36:47Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Servicio SNPServices ===&lt;br /&gt;
SNPServices es un servicio de gráficas...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El sistema de monitorización de la red se realiza mediante 3 sistemas principales. &lt;br /&gt;
Vea este documento para ver el esquema general http://es.wiki.guifi.net/wiki/Monitor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuración de servidor Cliente SNPServices'''&lt;br /&gt;
El cliente SNPServices recoge información de su red mas cercana. La almacena y se la entrega al servidor web en modo de gráficas que incrusta en el entorno de guifi.net.&lt;br /&gt;
Esta configuración es la que realizaras si quieres servir gráficos a la zona donde estas. Es muy probable que lo montes en el servidor proxy que tengáis, pero podría ser dedicado.&lt;br /&gt;
El procedimiento lo encontrarás aquí http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Servidor WEB'''&lt;br /&gt;
El servidor web de guifi, única ente que accede a las bases de datos del sistema.&lt;br /&gt;
Para montar un servicio WEB idéntico a www.guifi.net, o sea, un entorno de desarrollo se realiza mediante este procedimiento&lt;br /&gt;
http://es.wiki.guifi.net/wiki/Preparando_el_entorno_de_desarrollo&lt;br /&gt;
&lt;br /&gt;
'''Configuración de servidor MASTER SNPServices'''&lt;br /&gt;
Este servicio solo es alcanzable desde el cliente SNPServices. Solo existe un servicio como este y esta en la central de GUIFI.NET.&lt;br /&gt;
Desde aquí se crea el archivo CNML que se lo cede a los clientes SNPServices. Esta información se necesita para que los servicios SNPServices locales hagan sus comprobaciones de los sistemas cercanos.&lt;br /&gt;
Básicamente SNPServices sirve recopilar información general de la red que esta en la BBDD de GUIFI. Cuando un cliente SNPServices le pide información de su red, el servidor se la concede en formato CNML.&lt;br /&gt;
&lt;br /&gt;
=== Instalacion del servicio SNPServices ===&lt;br /&gt;
El servicio SNPServices Master y Cliente se instala del mismo modo.&lt;br /&gt;
A diferencia entre ambos es que usan procedimientos diferentes en al ejecución de sus tareas. También alguno común.&lt;br /&gt;
&lt;br /&gt;
Para instalarlo se hace así&lt;br /&gt;
Nos creamos una cuenta en el repositorio gitorius. Clonamos el servicio snpservices para poder enviar nuestras mejoras. Lo descargamos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /var/www/html&lt;br /&gt;
git clone git://gitorious.org/guifi/snpservices.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
También se puede descargar mediante repositorio.&lt;br /&gt;
http://es.wiki.guifi.net/wiki/Configurar_Repositorio_apt_guifi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Configurar_Repositorio_apt_guifi|Configurar el Repositorio de apt de Guifi]]&lt;br /&gt;
&lt;br /&gt;
Una vez configurado el repositorio, descargamos servicio.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# apt-get install snpservices&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si quieres instalar el servicio SNPServices para servir gráficas sigue los pasos aqui&lt;br /&gt;
http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas&lt;br /&gt;
&lt;br /&gt;
A partir de ahora configuraremos el servicio SNPServices Master para servir datos a los clientes SNPServicves&lt;br /&gt;
&lt;br /&gt;
=== Configuración del servicio SNPServices Master ===&lt;br /&gt;
&lt;br /&gt;
.Se crea un alias que apunte a nuestra carpeta donde hemos instalado el servicio&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; Alias /snpservices /var/www/html/snpservices &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
. Creas la rarpeta /tmp y le das permisos de escritura&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;mkdir /tmp&lt;br /&gt;
chmod a+rw snpservices/tmp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
.Crea els ervicio en al base  de datos usando esta direccion&lt;br /&gt;
&amp;lt;pre&amp;gt; http://yourserver/snpservices&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
te saldra una pagina asi&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ERROR: No service specified&lt;br /&gt;
CNML services&lt;br /&gt;
Version: 2.0&lt;br /&gt;
USAGE:&lt;br /&gt;
index.php?call=[service][&amp;amp;parameter[=value]]&lt;br /&gt;
&lt;br /&gt;
services: help version phpinfo serverinfo [service]&lt;br /&gt;
  help&lt;br /&gt;
...sigue...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
si fueras un cliente, el procedimiento continua cambiando el servidor root al que te conectas modificando el archivo /common/config.php.&lt;br /&gt;
Es por esto que nos sale el error &amp;quot;ERROR: No service specified&amp;quot;, pero en este caso nosotros somos el root y aqui tenemos que poner un que representa al servidor web. Para guifi tenemos un valor reservado. Si quieres contactar con el servidor root, debes de pedirlo en los foros abiertos en las listas de desarrollo. Para cualquier entorno podria valer con poner otro servidor de gráficas.&lt;br /&gt;
&lt;br /&gt;
Tenemos un archivo llamado common/config.php.template que nos servirá de plantilla&lt;br /&gt;
&lt;br /&gt;
=== Configuración del archivo config.php ===&lt;br /&gt;
Vamos al grano.&lt;br /&gt;
&lt;br /&gt;
Aquí se configura el directorio raiz del servicio SNP. Esta variable es usada en varios sitios.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// snp_pat: full directory where snp services are located&lt;br /&gt;
$snp_path='/var/www/html/snpservices';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Este es el numero de nodo que nos ha dado el servidor web al crear el servicio SNP Cliente.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// SNPGraphServerID: Default Graph Server ID&lt;br /&gt;
$SNPGraphServerId = 6579;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Servicio root. El root de nuestro servidor guifi actual es la pagina web www.guifi.net&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// rootZone: which is the ROOT zone&lt;br /&gt;
$rootZone = ****; (valor reservado por seguridad)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aqui la direccion desde donde se enlaza a los servicios mediante web. Esta variable es usada en varios archivos de configuracion&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// SNPDataServer_url: without ending backslash, the url where the data is&lt;br /&gt;
$SNPDataServer_url = 'http://guifi.net';&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuracion del servicio MRTG creador de gráficas. Aqui le diremos donde almacenar los datos.&lt;br /&gt;
Tienes que crear el directorio mrtg en /snpservices/mrtg&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// MRTGConfigSource: mrtg csv data&lt;br /&gt;
// As a input, could be either a local (to be created from&lt;br /&gt;
// cached CNML file, or remote&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
El programa cnml2mrtfcsv es el servicio SNPService principal y busca en la BBDD del servidor web los cambios que han habido. Si ha cambiado algo desde la ultima actualización, genera de nuevo el archivo CNML.&lt;br /&gt;
Se tiene que modificar a la ruta que tengamos nosotros, normalmente dentro de ./graphs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$MRTGConfigSource='http://proves.elserrat.guifi.net/snpservices/graphs/cnml2mrtgcsv.php';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Aqui almacenamos los datos mrtg que recojamos. La carpeta data no esta creada por defecto. La tenemos que crear mediante mkdir data desde el directorio snpservice&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//$MRTGConfigSource='../data/guifi_mrtg.csv';&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Configuracino para la creacion de archivo CNML&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// CNMLSource: url for CNML node query, use sprintf syntax&lt;br /&gt;
// MySQL-drupal source&lt;br /&gt;
//$CNMLSource='http://proves.elserrat.guifi.net/guifi/cnml/%s/node';&lt;br /&gt;
// Cached CNML source (prefered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Aqui almacenamos los datos CNML que recojamos&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$CNMLSource='http://proves.elserrat.guifi.net/snpservices/common/qnodes.php?nodes=%s';&lt;br /&gt;
$CNMLData='../data/guifi.cnml';&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Configuracion de herramienta rrdtool. transforma tdatos en archivi .rrd para poder ser exportado. No hace falta hacer nada aqui&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// rrdtool parameters&lt;br /&gt;
$rrdtool_path='/usr/bin/rrdtool';&lt;br /&gt;
$rrddb_path='/home1/comesfa/mrtg/logs/';&lt;br /&gt;
$rrdimg_path='/home1/comesfa/mrtg/images/';&lt;br /&gt;
&lt;br /&gt;
// which version does have this server? &lt;br /&gt;
// currently supported versions are:&lt;br /&gt;
// 1.2&lt;br /&gt;
// 1.3&lt;br /&gt;
$rrdtool_version = &amp;quot;1.3&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Configuracion de entorno MRTG. No hace falta hacer nada aqui&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// mrtg local header&lt;br /&gt;
$rrdtool_header='# PathAdd: /usr/local/rrdtool-1.2.12/bin&lt;br /&gt;
# LibAdd: /usr/local/rrdtool-1.2.12/lib/perl/5.8.8/i386-linux-thread-multi&lt;br /&gt;
HtmlDir: %s&lt;br /&gt;
ImageDir: %s &lt;br /&gt;
LogDir: %s&lt;br /&gt;
LogFormat: rrdtool&lt;br /&gt;
ThreshDir: %s&lt;br /&gt;
Forks: 12&lt;br /&gt;
';&lt;br /&gt;
&lt;br /&gt;
// mrtg ping template&lt;br /&gt;
$mrtg_ping_template ='Title[%s_ping]: Temps del ping de %s &lt;br /&gt;
PageTop[%s_ping]: &amp;lt;H1&amp;gt;Lat&amp;amp;egrave;ncia %s&amp;lt;/H1&amp;gt;&lt;br /&gt;
     &amp;lt;TABLE&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;System:&amp;lt;/TD&amp;gt;     &amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Maintainer:&amp;lt;/TD&amp;gt; &amp;lt;TD&amp;gt;guifi@guifi.net&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Description:&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;ping&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;IP:&amp;lt;/TD&amp;gt;         &amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;/TABLE&amp;gt;&lt;br /&gt;
Target[%s_ping]: `/etc/mrtg/ping.sh %s`&lt;br /&gt;
MaxBytes[%s_ping]: 2000&lt;br /&gt;
Options[%s_ping]: growright,unknaszero,nopercent,gauge&lt;br /&gt;
LegendI[%s_ping]: Perduts %&lt;br /&gt;
LegendO[%s_ping]: Temps mig&lt;br /&gt;
Legend1[%s_ping]: Temps max. en ms&lt;br /&gt;
Legend2[%s_ping]: Temps min. en ms&lt;br /&gt;
YLegend[%s_ping]: RTT (ms)&lt;br /&gt;
';&lt;br /&gt;
&lt;br /&gt;
$mrtg_traffic_template='Target[%s_traf]: %s:public@%s:&lt;br /&gt;
SetEnv[%s_traf]: MRTG_INT_IP=&amp;quot;%s&amp;quot; MRTG_INT_DESCR=&amp;quot;%s&amp;quot;&lt;br /&gt;
MaxBytes[%s_traf]: 104857600&lt;br /&gt;
Title[%s_traf]: Tr&amp;amp;agrave;nsit a %s de %s&lt;br /&gt;
PageTop[%s_traf]: &amp;lt;H1&amp;gt;Tr&amp;amp;agrave;nsit a %s de %s&amp;lt;/H1&amp;gt;&lt;br /&gt;
     &amp;lt;TABLE&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;System:&amp;lt;/TD&amp;gt;     &amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Maintainer:&amp;lt;/TD&amp;gt; &amp;lt;TD&amp;gt;guifi@guifi.net&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Description:&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Max Speed:&amp;lt;/TD&amp;gt;  &amp;lt;TD&amp;gt;100.0 Mbytes/s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;/TABLE&amp;gt;&lt;br /&gt;
';&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arrancamos y actualizamos datos ===&lt;br /&gt;
Para arrancar y actualizar datos se hace mediante un comando llamado refresh.sh&lt;br /&gt;
Mas adelante configuraremos para que refresque solo. Primero lo ejecutaremos manualmente&lt;br /&gt;
&lt;br /&gt;
Lo he arrancado y me da el siguiente error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# ./refresh.sh &lt;br /&gt;
Getting CNML file&lt;br /&gt;
Error redaing CNML source\nroot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Esto es porque no hay configurado algu parametro. Entramos en refresh.sh y este nos envia a refresh.cnml.php&lt;br /&gt;
refress.sh llama a dos archivos php.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# cat refresh.sh &lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# Refreshing CNML local file (optional)&lt;br /&gt;
php refresh_cnml.php&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configurar refresh.cnml.php ===&lt;br /&gt;
Veamos ahora el archivo de configuracion refresh.cnml.php&lt;br /&gt;
&lt;br /&gt;
Si queremos ejecutar este archivo lo hacemos mediante la llamada a php&lt;br /&gt;
Aqui vemos que error genera y podremos ir a ver donde esta ocurriendo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Este es el archivo. Primero carga una configuración común en el archivo config.php. Sino busca la plantilla config.php.template&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
  if (file_exists(&amp;quot;config.php&amp;quot;)) {&lt;br /&gt;
    include_once(&amp;quot;./config.php&amp;quot;);&lt;br /&gt;
  } else {&lt;br /&gt;
    include_once(&amp;quot;config.php.template&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  $minX = 999;&lt;br /&gt;
  $minY = 999;&lt;br /&gt;
  $maxX = -999;&lt;br /&gt;
  $maxY = -999;&lt;br /&gt;
&lt;br /&gt;
  $members = array();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Intenta abrir archivo ya creado. Tenemos que modificar la ruta donde almacena esta informacion. Compara la fecha de actualización anterior y la actual para decidir si hacer un refresco completo o no.&lt;br /&gt;
si todo esta actualizado, ejecuta exit() y acaba.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  $hlastnow = @fopen($SNPDataServer_url.&amp;quot;/guifi/refresh/cnml&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    or die('Error reading last timestamp\n');&lt;br /&gt;
  $last_now = fgets($hlastnow);&lt;br /&gt;
  fclose($hlastnow);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_update.cnml&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
  if (($hlast) and ($last_now == fgets($hlast))) {&lt;br /&gt;
    fclose($hlast);&lt;br /&gt;
    echo &amp;quot;No changes.\n&amp;quot;;&lt;br /&gt;
    exit();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si está mal configurado estos parámetros, tendremos el siguiente error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# php refresh_cnml.php &lt;br /&gt;
Getting CNML file&lt;br /&gt;
Error reading last timestamp&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aqui es cuando empieza la búsqueda de cambios.&lt;br /&gt;
El primer open abre un archivo de la web con los contenidos. estos son comparados con el archivo que tenemos en /tmp. Si son diferentes, realiza una descarga y lo actualiza.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Getting CNML file\n&amp;quot;;&lt;br /&gt;
  $hcnml = @fopen($SNPDataServer_url.&amp;quot;/guifi/cnml/&amp;quot;.$rootZone.&amp;quot;/detail&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    or die ('Error redaing CNML source\n');&lt;br /&gt;
  $wcnml = @fopen(&amp;quot;../data/guifi.cnml.tmp&amp;quot;, &amp;quot;w&amp;quot;);&lt;br /&gt;
  while (!feof($hcnml)) {&lt;br /&gt;
    $buffer = fgets($hcnml, 4096);&lt;br /&gt;
    fwrite($wcnml,$buffer);&lt;br /&gt;
  }&lt;br /&gt;
  fclose($hcnml);&lt;br /&gt;
  fclose($wcnml);&lt;br /&gt;
  exec (&amp;quot;/bin/cp ../data/guifi.cnml.tmp ../data/guifi.cnml&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_update.cnml&amp;quot;, &amp;quot;w&amp;quot;) or die('Error!');&lt;br /&gt;
  fwrite($hlast,$last_now);&lt;br /&gt;
  fclose($hlast);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
                  &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si esta mal configurado, recibiremos este error. Tambien puede identificar falta de recursos para Apache.Mira el log de Apache.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# php refresh_cnml.php &lt;br /&gt;
Getting CNML file&lt;br /&gt;
Error redaing CNML source\n&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices[Sat May 22 00:39:01 2010] [notice] child pid 14787 exit signal Segmentation fault (11)/common#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
El sistema dentro de la web que crea el archivo CNML es un proceso de un modulo de Drupal del sistema guifi&lt;br /&gt;
Lo encontraras aqui&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/sites/all/modules/guifi/guifi_cnml.inc.php&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora tenemos dentro de /data dos archivos iguales llamados guifi.cnml i guifi.cnml.tmp con os contenidos encontrados.&lt;br /&gt;
También actualiza datos en /tmp/last_update.cnml que se usara nuevamente en la próxima actualizacion&lt;br /&gt;
&lt;br /&gt;
=== Prueba de servicio ===&lt;br /&gt;
&lt;br /&gt;
Un cliente con servici SNPService usara el servicio SNPService Master recien creado para preguntar informacion acerca un nodo de esta manera&lt;br /&gt;
http://www.guifi.net/snpservices/graphs/cnml2mrtgcsv.php?server=6558&lt;br /&gt;
&lt;br /&gt;
Esto nos devuelve un archivo CNML como este&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
46491,#VicPuigsacalm2Rd1,10.138.48.51,wlan1;VicVcPgsclm2Rd1CPE0,Planned&lt;br /&gt;
38297,#VicCnvntCrmltsRd1,10.138.160.39,ath0;Vic-1-NOVcCnvntCrmltsRd1CPE0,Working&lt;br /&gt;
45489,#Vic11Set38Rd1,10.138.168.170,wlan1;Vic-1-NOVc11St38Rd1CPE0,Planned&lt;br /&gt;
44406,#Vic11set40Rd2,10.138.101.4,ath0;Vic-1-NO11st40Rd2CPE0,Working&lt;br /&gt;
33929,#Vic11setembre25Rd1,10.138.22.87,wifi0;Vic-1-NOVc11stmbr25Rd1CPE0,Working&lt;br /&gt;
18809,#VicAGrifollRd2,10.138.14.104,6,Working&lt;br /&gt;
40356,#VicAlbergCanongeRd2,10.138.10.80,Lan/Lan;Vic-1-NOVclbrgCnngRd2CPE0,Working&lt;br /&gt;
22068,#VicAlemanyRd1,10.138.14.135,wifi0;Vic-1 NOVclmnyRd1CPE0,Working&lt;br /&gt;
30303,#VicAlemanyRd2,10.138.14.201,wifi0;Vic-1 NOVclmnyRd2CPE0,Planned&lt;br /&gt;
36620,#VicAlinaRd2,10.138.10.72,wlan1;Vic-1-NOVclnRd2CPE0,Working&lt;br /&gt;
7211,#VicAngladaRd1,10.138.10.73,Lan/Lan;VicAngladaRadio1-0,Working&lt;br /&gt;
19857,#VicAnnaBRd2,10.138.11.62,wifi0;VicVcnnBRd2CPE0,Working&lt;br /&gt;
14203,#VicAnnaMaxenchsRd1,10.138.22.41,wifi0;VicVcnnMxnchsRd1CPE0,Working&lt;br /&gt;
13655,#VicAnnaPratRd1,10.138.11.51,;VicVcnnPrtRd2CPE0,Working&lt;br /&gt;
17035,#VicAnnaSolerRd3,10.138.22.196,6,Working&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La configuracion puede que no funcione. Para ver errores, pedir a apache que nos mustre su log&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:~# tail -f /var/log/apache2/*.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Yo me he encotnrado este error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Mon Oct 22 23:27:07 2012] [error] [client 192.168.1.40] PHP Warning:  DOMDocument::load(): &lt;br /&gt;
Premature end of data in tag html line 3 in /var/www/drupal-6.26/snpservices/data/guifi.cnml, line: 149 in /var/www/drupal-6.26/snpservices/graphs/cnml2mrtgcsv.php on line 270&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tambien este. Parece que al intentar cargar la zona, da un error Apache a causa de falta de memoria al cargar todos los datos en una variable&lt;br /&gt;
Para solucioanrlo se tiene que modificar el limite d ememoria para php dentro de /etc/php5/apache/php.ini&lt;br /&gt;
La variable se llama &lt;br /&gt;
memory_limit = 128M&lt;br /&gt;
Parece que si lo pones a -1 equivale a que no tenga limite.&lt;br /&gt;
http://es1.php.net/manual/es/ini.core.php#ini.memory-limit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
==&amp;gt; /var/log/apache2/error.log &amp;lt;==&lt;br /&gt;
[Tue Oct 23 20:54:16 2012] [error] [client 192.168.1.44] PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 20 bytes) in /var/www/drupal-6.26/includes/database.mysqli.inc on line 150&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De todas maneras, los recursos son limitados. Este mensaje en Apache identifica lo msimo. Falta de recursos. En mi caso, como no tengo mas, hago una consulta mas pequeña para poder probar.el error que me salia es este&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Sat May 22 00:39:01 2010] [notice] child pid 14787 exit signal Segmentation fault (11)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
He aprendido la causas aquí http://www.webhostingtalk.com/showthread.php?t=950165&lt;br /&gt;
&lt;br /&gt;
=== Migración de un servidor a otro ===&lt;br /&gt;
Si quieres migrar un servidor de gráficas a otro servidor manteniendo las gráficas es tan simple como configurar el snpservices con el mismo ID que el antiguo y copiar los ficheros .rrd de /var/lib/snpservices/rrdb de la máquian vieja a la nueva.&lt;br /&gt;
&lt;br /&gt;
Si la máquina nueva funciona con una arquitectura (por ejemplo, antes 32bits y ahora 64bits), los ficheros .rrd deben ser reconvertidos. Para ello hay que convertir el .rrd a XML y volver a crear el fichero .rrd a partir del XML.&lt;br /&gt;
&lt;br /&gt;
En la máquina de 32bits ejecutamos esto:&lt;br /&gt;
:rrdtool dump fitxer_32bits_.rrd &amp;gt; fitxer.xml&lt;br /&gt;
&lt;br /&gt;
Copiamos el ficheor a la nueva máquina de 64bits y ejecutamos:&lt;br /&gt;
:rrdtool restore fitxer.xml&lt;br /&gt;
&lt;br /&gt;
Y queda generado el fichero .rrd&lt;br /&gt;
&lt;br /&gt;
[[Categoría:SNPServices]]&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/SNPServices</id>
		<title>SNPServices</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/SNPServices"/>
				<updated>2012-10-23T20:45:02Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: /* Prueba de servicio */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Servicio SNPServices ===&lt;br /&gt;
SNPServices es un servicio de gráficas...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El sistema de monitorización de la red se realiza mediante 3 sistemas principales. &lt;br /&gt;
Vea este documento para ver el esquema general http://es.wiki.guifi.net/wiki/Monitor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuración de servidor Cliente SNPServices'''&lt;br /&gt;
El cliente SNPServices recoge información de su red mas cercana. La almacena y se la entrega al servidor web en modo de gráficas que incrusta en el entorno de guifi.net.&lt;br /&gt;
Esta configuración es la que realizaras si quieres servir gráficos a la zona donde estas. Es muy probable que lo montes en el servidor proxy que tengáis, pero podría ser dedicado.&lt;br /&gt;
El procedimiento lo encontrarás aquí http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Servidor WEB'''&lt;br /&gt;
El servidor web de guifi, única ente que accede a las bases de datos del sistema.&lt;br /&gt;
Para montar un servicio WEB idéntico a www.guifi.net, o sea, un entorno de desarrollo se realiza mediante este procedimiento&lt;br /&gt;
http://es.wiki.guifi.net/wiki/Preparando_el_entorno_de_desarrollo&lt;br /&gt;
&lt;br /&gt;
'''Configuración de servidor MASTER SNPServices'''&lt;br /&gt;
Este servicio solo es alcanzable desde el cliente SNPServices. Solo existe un servicio como este y esta en la central de GUIFI.NET.&lt;br /&gt;
Desde aquí se crea el archivo CNML que se lo cede a los clientes SNPServices. Esta información se necesita para que los servicios SNPServices locales hagan sus comprobaciones de los sistemas cercanos.&lt;br /&gt;
Básicamente SNPServices sirve recopilar información general de la red que esta en la BBDD de GUIFI. Cuando un cliente SNPServices le pide información de su red, el servidor se la concede en formato CNML.&lt;br /&gt;
&lt;br /&gt;
=== Instalacion del servicio SNPServices ===&lt;br /&gt;
El servicio SNPServices Master y Cliente se instala del mismo modo.&lt;br /&gt;
A diferencia entre ambos es que usan procedimientos diferentes en al ejecución de sus tareas. También alguno común.&lt;br /&gt;
&lt;br /&gt;
Para instalarlo se hace así&lt;br /&gt;
Nos creamos una cuenta en el repositorio gitorius. Clonamos el servicio snpservices para poder enviar nuestras mejoras. Lo descargamos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /var/www/html&lt;br /&gt;
git clone git://gitorious.org/guifi/snpservices.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
También se puede descargar mediante repositorio.&lt;br /&gt;
http://es.wiki.guifi.net/wiki/Configurar_Repositorio_apt_guifi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Configurar_Repositorio_apt_guifi|Configurar el Repositorio de apt de Guifi]]&lt;br /&gt;
&lt;br /&gt;
Una vez configurado el repositorio, descargamos servicio.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# apt-get install snpservices&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si quieres instalar el servicio SNPServices para servir gráficas sigue los pasos aqui&lt;br /&gt;
http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas&lt;br /&gt;
&lt;br /&gt;
A partir de ahora configuraremos el servicio SNPServices Master para servir datos a los clientes SNPServicves&lt;br /&gt;
&lt;br /&gt;
=== Configuración del servicio SNPServices Master ===&lt;br /&gt;
&lt;br /&gt;
.Se crea un alias que apunte a nuestra carpeta donde hemos instalado el servicio&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; Alias /snpservices /var/www/html/snpservices &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
. Creas la rarpeta /tmp y le das permisos de escritura&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;mkdir /tmp&lt;br /&gt;
chmod a+rw snpservices/tmp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
.Crea els ervicio en al base  de datos usando esta direccion&lt;br /&gt;
&amp;lt;pre&amp;gt; http://yourserver/snpservices&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
te saldra una pagina asi&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ERROR: No service specified&lt;br /&gt;
CNML services&lt;br /&gt;
Version: 2.0&lt;br /&gt;
USAGE:&lt;br /&gt;
index.php?call=[service][&amp;amp;parameter[=value]]&lt;br /&gt;
&lt;br /&gt;
services: help version phpinfo serverinfo [service]&lt;br /&gt;
  help&lt;br /&gt;
...sigue...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
si fueras un cliente, el procedimiento continua cambiando el servidor root al que te conectas modificando el archivo /common/config.php.&lt;br /&gt;
Es pro esto que nos sale el error &amp;quot;ERROR: No service specified&amp;quot;, pero en este caso nosotros somos el roor y aqui tenemos que poner 3671 que representa al servidor web.&lt;br /&gt;
Tenemos un archivo llamado common/config.php.template que nos servirá de plantilla&lt;br /&gt;
&lt;br /&gt;
=== Configuración del archivo config.php ===&lt;br /&gt;
Vamos al grano.&lt;br /&gt;
&lt;br /&gt;
Aquí se configura el directorio raiz del servicio SNP. Esta variable es usada en varios sitios.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// snp_pat: full directory where snp services are located&lt;br /&gt;
$snp_path='/var/www/html/snpservices';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Este es el numero de nodo que nos ha dado el servidor web al crear el servicio SNP Cliente.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// SNPGraphServerID: Default Graph Server ID&lt;br /&gt;
$SNPGraphServerId = 6579;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Servicio root. El root de nuestro servidor guifi actual es el 3671&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// rootZone: which is the ROOT zone&lt;br /&gt;
$rootZone = 3671;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aqui la direccion desde donde se enlaza a los servicios mediante web. Esta variable es usada en varios archivos de configuracion&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// SNPDataServer_url: without ending backslash, the url where the data is&lt;br /&gt;
$SNPDataServer_url = 'http://guifi.net';&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuracion del servicio MRTG creador de gráficas. Aqui le diremos donde almacenar los datos.&lt;br /&gt;
Tienes que crear el directorio mrtg en /snpservices/mrtg&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// MRTGConfigSource: mrtg csv data&lt;br /&gt;
// As a input, could be either a local (to be created from&lt;br /&gt;
// cached CNML file, or remote&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
El programa cnml2mrtfcsv es el servicio SNPService principal y busca en la BBDD del servidor web los cambios que han habido. Si ha cambiado algo desde la ultima actualización, genera de nuevo el archivo CNML.&lt;br /&gt;
Se tiene que modificar a la ruta que tengamos nosotros, normalmente dentro de ./graphs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$MRTGConfigSource='http://proves.elserrat.guifi.net/snpservices/graphs/cnml2mrtgcsv.php';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Aqui almacenamos los datos mrtg que recojamos. La carpeta data no esta creada por defecto. La tenemos que crear mediante mkdir data desde el directorio snpservice&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//$MRTGConfigSource='../data/guifi_mrtg.csv';&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Configuracino para la creacion de archivo CNML&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// CNMLSource: url for CNML node query, use sprintf syntax&lt;br /&gt;
// MySQL-drupal source&lt;br /&gt;
//$CNMLSource='http://proves.elserrat.guifi.net/guifi/cnml/%s/node';&lt;br /&gt;
// Cached CNML source (prefered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Aqui almacenamos los datos CNML que recojamos&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$CNMLSource='http://proves.elserrat.guifi.net/snpservices/common/qnodes.php?nodes=%s';&lt;br /&gt;
$CNMLData='../data/guifi.cnml';&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Configuracion de herramienta rrdtool. transforma tdatos en archivi .rrd para poder ser exportado. No hace falta hacer nada aqui&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// rrdtool parameters&lt;br /&gt;
$rrdtool_path='/usr/bin/rrdtool';&lt;br /&gt;
$rrddb_path='/home1/comesfa/mrtg/logs/';&lt;br /&gt;
$rrdimg_path='/home1/comesfa/mrtg/images/';&lt;br /&gt;
&lt;br /&gt;
// which version does have this server? &lt;br /&gt;
// currently supported versions are:&lt;br /&gt;
// 1.2&lt;br /&gt;
// 1.3&lt;br /&gt;
$rrdtool_version = &amp;quot;1.3&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Configuracion de entorno MRTG. No hace falta hacer nada aqui&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// mrtg local header&lt;br /&gt;
$rrdtool_header='# PathAdd: /usr/local/rrdtool-1.2.12/bin&lt;br /&gt;
# LibAdd: /usr/local/rrdtool-1.2.12/lib/perl/5.8.8/i386-linux-thread-multi&lt;br /&gt;
HtmlDir: %s&lt;br /&gt;
ImageDir: %s &lt;br /&gt;
LogDir: %s&lt;br /&gt;
LogFormat: rrdtool&lt;br /&gt;
ThreshDir: %s&lt;br /&gt;
Forks: 12&lt;br /&gt;
';&lt;br /&gt;
&lt;br /&gt;
// mrtg ping template&lt;br /&gt;
$mrtg_ping_template ='Title[%s_ping]: Temps del ping de %s &lt;br /&gt;
PageTop[%s_ping]: &amp;lt;H1&amp;gt;Lat&amp;amp;egrave;ncia %s&amp;lt;/H1&amp;gt;&lt;br /&gt;
     &amp;lt;TABLE&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;System:&amp;lt;/TD&amp;gt;     &amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Maintainer:&amp;lt;/TD&amp;gt; &amp;lt;TD&amp;gt;guifi@guifi.net&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Description:&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;ping&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;IP:&amp;lt;/TD&amp;gt;         &amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;/TABLE&amp;gt;&lt;br /&gt;
Target[%s_ping]: `/etc/mrtg/ping.sh %s`&lt;br /&gt;
MaxBytes[%s_ping]: 2000&lt;br /&gt;
Options[%s_ping]: growright,unknaszero,nopercent,gauge&lt;br /&gt;
LegendI[%s_ping]: Perduts %&lt;br /&gt;
LegendO[%s_ping]: Temps mig&lt;br /&gt;
Legend1[%s_ping]: Temps max. en ms&lt;br /&gt;
Legend2[%s_ping]: Temps min. en ms&lt;br /&gt;
YLegend[%s_ping]: RTT (ms)&lt;br /&gt;
';&lt;br /&gt;
&lt;br /&gt;
$mrtg_traffic_template='Target[%s_traf]: %s:public@%s:&lt;br /&gt;
SetEnv[%s_traf]: MRTG_INT_IP=&amp;quot;%s&amp;quot; MRTG_INT_DESCR=&amp;quot;%s&amp;quot;&lt;br /&gt;
MaxBytes[%s_traf]: 104857600&lt;br /&gt;
Title[%s_traf]: Tr&amp;amp;agrave;nsit a %s de %s&lt;br /&gt;
PageTop[%s_traf]: &amp;lt;H1&amp;gt;Tr&amp;amp;agrave;nsit a %s de %s&amp;lt;/H1&amp;gt;&lt;br /&gt;
     &amp;lt;TABLE&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;System:&amp;lt;/TD&amp;gt;     &amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Maintainer:&amp;lt;/TD&amp;gt; &amp;lt;TD&amp;gt;guifi@guifi.net&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Description:&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Max Speed:&amp;lt;/TD&amp;gt;  &amp;lt;TD&amp;gt;100.0 Mbytes/s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;/TABLE&amp;gt;&lt;br /&gt;
';&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arrancamos y actualizamos datos ===&lt;br /&gt;
Para arrancar y actualizar datos se hace mediante un comando llamado refresh.sh&lt;br /&gt;
Mas adelante configuraremos para que refresque solo. Primero lo ejecutaremos manualmente&lt;br /&gt;
&lt;br /&gt;
Lo he arrancado y me da el siguiente error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# ./refresh.sh &lt;br /&gt;
Getting CNML file&lt;br /&gt;
Error redaing CNML source\nroot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Esto es porque no hay configurado algu parametro. Entramos en refresh.sh y este nos envia a refresh.cnml.php&lt;br /&gt;
refress.sh llama a dos archivos php.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# cat refresh.sh &lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# Refreshing CNML local file (optional)&lt;br /&gt;
php refresh_cnml.php&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configurar refresh.cnml.php ===&lt;br /&gt;
Veamos ahora el archivo de configuracion refresh.cnml.php&lt;br /&gt;
&lt;br /&gt;
Si queremos ejecutar este archivo lo hacemos mediante la llamada a php&lt;br /&gt;
Aqui vemos que error genera y podremos ir a ver donde esta ocurriendo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Este es el archivo. Primero carga una configuración común en el archivo config.php. Sino busca la plantilla config.php.template&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
  if (file_exists(&amp;quot;config.php&amp;quot;)) {&lt;br /&gt;
    include_once(&amp;quot;./config.php&amp;quot;);&lt;br /&gt;
  } else {&lt;br /&gt;
    include_once(&amp;quot;config.php.template&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  $minX = 999;&lt;br /&gt;
  $minY = 999;&lt;br /&gt;
  $maxX = -999;&lt;br /&gt;
  $maxY = -999;&lt;br /&gt;
&lt;br /&gt;
  $members = array();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Intenta abrir archivo ya creado. Tenemos que modificar la ruta donde almacena esta informacion. Compara la fecha de actualización anterior y la actual para decidir si hacer un refresco completo o no.&lt;br /&gt;
si todo esta actualizado, ejecuta exit() y acaba.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  $hlastnow = @fopen($SNPDataServer_url.&amp;quot;/guifi/refresh/cnml&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    or die('Error reading last timestamp\n');&lt;br /&gt;
  $last_now = fgets($hlastnow);&lt;br /&gt;
  fclose($hlastnow);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_update.cnml&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
  if (($hlast) and ($last_now == fgets($hlast))) {&lt;br /&gt;
    fclose($hlast);&lt;br /&gt;
    echo &amp;quot;No changes.\n&amp;quot;;&lt;br /&gt;
    exit();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si está mal configurado estos parámetros, tendremos el siguiente error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# php refresh_cnml.php &lt;br /&gt;
Getting CNML file&lt;br /&gt;
Error reading last timestamp&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aqui es cuando empieza la búsqueda de cambios.&lt;br /&gt;
El primer open abre un archivo de la web con los contenidos. estos son comparados con el archivo que tenemos en /tmp. Si son diferentes, realiza una descarga y lo actualiza.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Getting CNML file\n&amp;quot;;&lt;br /&gt;
  $hcnml = @fopen($SNPDataServer_url.&amp;quot;/guifi/cnml/&amp;quot;.$rootZone.&amp;quot;/detail&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    or die ('Error redaing CNML source\n');&lt;br /&gt;
  $wcnml = @fopen(&amp;quot;../data/guifi.cnml.tmp&amp;quot;, &amp;quot;w&amp;quot;);&lt;br /&gt;
  while (!feof($hcnml)) {&lt;br /&gt;
    $buffer = fgets($hcnml, 4096);&lt;br /&gt;
    fwrite($wcnml,$buffer);&lt;br /&gt;
  }&lt;br /&gt;
  fclose($hcnml);&lt;br /&gt;
  fclose($wcnml);&lt;br /&gt;
  exec (&amp;quot;/bin/cp ../data/guifi.cnml.tmp ../data/guifi.cnml&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_update.cnml&amp;quot;, &amp;quot;w&amp;quot;) or die('Error!');&lt;br /&gt;
  fwrite($hlast,$last_now);&lt;br /&gt;
  fclose($hlast);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
                  &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si esta mal configurado, recibiremos este error. Tambien puede identificar falta de recursos para Apache.Mira el log de Apache.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# php refresh_cnml.php &lt;br /&gt;
Getting CNML file&lt;br /&gt;
Error redaing CNML source\n&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices[Sat May 22 00:39:01 2010] [notice] child pid 14787 exit signal Segmentation fault (11)/common#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
El sistema dentro de la web que crea el archivo CNML es un proceso de un modulo de Drupal del sistema guifi&lt;br /&gt;
Lo encontraras aqui&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/sites/all/modules/guifi/guifi_cnml.inc.php&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora tenemos dentro de /data dos archivos iguales llamados guifi.cnml i guifi.cnml.tmp con os contenidos encontrados.&lt;br /&gt;
También actualiza datos en /tmp/last_update.cnml que se usara nuevamente en la próxima actualizacion&lt;br /&gt;
&lt;br /&gt;
=== Prueba de servicio ===&lt;br /&gt;
&lt;br /&gt;
Un cliente con servici SNPService usara el servicio SNPService Master recien creado para preguntar informacion acerca un nodo de esta manera&lt;br /&gt;
http://www.guifi.net/snpservices/graphs/cnml2mrtgcsv.php?server=6558&lt;br /&gt;
&lt;br /&gt;
Esto nos devuelve un archivo CNML como este&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
46491,#VicPuigsacalm2Rd1,10.138.48.51,wlan1;VicVcPgsclm2Rd1CPE0,Planned&lt;br /&gt;
38297,#VicCnvntCrmltsRd1,10.138.160.39,ath0;Vic-1-NOVcCnvntCrmltsRd1CPE0,Working&lt;br /&gt;
45489,#Vic11Set38Rd1,10.138.168.170,wlan1;Vic-1-NOVc11St38Rd1CPE0,Planned&lt;br /&gt;
44406,#Vic11set40Rd2,10.138.101.4,ath0;Vic-1-NO11st40Rd2CPE0,Working&lt;br /&gt;
33929,#Vic11setembre25Rd1,10.138.22.87,wifi0;Vic-1-NOVc11stmbr25Rd1CPE0,Working&lt;br /&gt;
18809,#VicAGrifollRd2,10.138.14.104,6,Working&lt;br /&gt;
40356,#VicAlbergCanongeRd2,10.138.10.80,Lan/Lan;Vic-1-NOVclbrgCnngRd2CPE0,Working&lt;br /&gt;
22068,#VicAlemanyRd1,10.138.14.135,wifi0;Vic-1 NOVclmnyRd1CPE0,Working&lt;br /&gt;
30303,#VicAlemanyRd2,10.138.14.201,wifi0;Vic-1 NOVclmnyRd2CPE0,Planned&lt;br /&gt;
36620,#VicAlinaRd2,10.138.10.72,wlan1;Vic-1-NOVclnRd2CPE0,Working&lt;br /&gt;
7211,#VicAngladaRd1,10.138.10.73,Lan/Lan;VicAngladaRadio1-0,Working&lt;br /&gt;
19857,#VicAnnaBRd2,10.138.11.62,wifi0;VicVcnnBRd2CPE0,Working&lt;br /&gt;
14203,#VicAnnaMaxenchsRd1,10.138.22.41,wifi0;VicVcnnMxnchsRd1CPE0,Working&lt;br /&gt;
13655,#VicAnnaPratRd1,10.138.11.51,;VicVcnnPrtRd2CPE0,Working&lt;br /&gt;
17035,#VicAnnaSolerRd3,10.138.22.196,6,Working&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La configuracion puede que no funcione. Para ver errores, pedir a apache que nos mustre su log&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:~# tail -f /var/log/apache2/*.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Yo me he encotnrado este error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Mon Oct 22 23:27:07 2012] [error] [client 192.168.1.40] PHP Warning:  DOMDocument::load(): &lt;br /&gt;
Premature end of data in tag html line 3 in /var/www/drupal-6.26/snpservices/data/guifi.cnml, line: 149 in /var/www/drupal-6.26/snpservices/graphs/cnml2mrtgcsv.php on line 270&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tambien este. Parece que al intentar cargar la zona, da un error Apache a causa de falta de memoria al cargar todos los datos en una variable&lt;br /&gt;
Para solucioanrlo se tiene que modificar el limite d ememoria para php dentro de /etc/php5/apache/php.ini&lt;br /&gt;
La variable se llama &lt;br /&gt;
memory_limit = 128M&lt;br /&gt;
Parece que si lo pones a -1 equivale a que no tenga limite.&lt;br /&gt;
http://es1.php.net/manual/es/ini.core.php#ini.memory-limit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
==&amp;gt; /var/log/apache2/error.log &amp;lt;==&lt;br /&gt;
[Tue Oct 23 20:54:16 2012] [error] [client 192.168.1.44] PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 20 bytes) in /var/www/drupal-6.26/includes/database.mysqli.inc on line 150&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De todas maneras, los recursos son limitados. Este mensaje en Apache identifica lo msimo. Falta de recursos. En mi caso, como no tengo mas, hago una consulta mas pequeña para poder probar.el error que me salia es este&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Sat May 22 00:39:01 2010] [notice] child pid 14787 exit signal Segmentation fault (11)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
He aprendido la causas aquí http://www.webhostingtalk.com/showthread.php?t=950165&lt;br /&gt;
&lt;br /&gt;
=== Migración de un servidor a otro ===&lt;br /&gt;
Si quieres migrar un servidor de gráficas a otro servidor manteniendo las gráficas es tan simple como configurar el snpservices con el mismo ID que el antiguo y copiar los ficheros .rrd de /var/lib/snpservices/rrdb de la máquian vieja a la nueva.&lt;br /&gt;
&lt;br /&gt;
Si la máquina nueva funciona con una arquitectura (por ejemplo, antes 32bits y ahora 64bits), los ficheros .rrd deben ser reconvertidos. Para ello hay que convertir el .rrd a XML y volver a crear el fichero .rrd a partir del XML.&lt;br /&gt;
&lt;br /&gt;
En la máquina de 32bits ejecutamos esto:&lt;br /&gt;
:rrdtool dump fitxer_32bits_.rrd &amp;gt; fitxer.xml&lt;br /&gt;
&lt;br /&gt;
Copiamos el ficheor a la nueva máquina de 64bits y ejecutamos:&lt;br /&gt;
:rrdtool restore fitxer.xml&lt;br /&gt;
&lt;br /&gt;
Y queda generado el fichero .rrd&lt;br /&gt;
&lt;br /&gt;
[[Categoría:SNPServices]]&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/SNPServices</id>
		<title>SNPServices</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/SNPServices"/>
				<updated>2012-10-23T20:43:27Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: /* Configurar refresh.cnml.php */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Servicio SNPServices ===&lt;br /&gt;
SNPServices es un servicio de gráficas...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El sistema de monitorización de la red se realiza mediante 3 sistemas principales. &lt;br /&gt;
Vea este documento para ver el esquema general http://es.wiki.guifi.net/wiki/Monitor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuración de servidor Cliente SNPServices'''&lt;br /&gt;
El cliente SNPServices recoge información de su red mas cercana. La almacena y se la entrega al servidor web en modo de gráficas que incrusta en el entorno de guifi.net.&lt;br /&gt;
Esta configuración es la que realizaras si quieres servir gráficos a la zona donde estas. Es muy probable que lo montes en el servidor proxy que tengáis, pero podría ser dedicado.&lt;br /&gt;
El procedimiento lo encontrarás aquí http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Servidor WEB'''&lt;br /&gt;
El servidor web de guifi, única ente que accede a las bases de datos del sistema.&lt;br /&gt;
Para montar un servicio WEB idéntico a www.guifi.net, o sea, un entorno de desarrollo se realiza mediante este procedimiento&lt;br /&gt;
http://es.wiki.guifi.net/wiki/Preparando_el_entorno_de_desarrollo&lt;br /&gt;
&lt;br /&gt;
'''Configuración de servidor MASTER SNPServices'''&lt;br /&gt;
Este servicio solo es alcanzable desde el cliente SNPServices. Solo existe un servicio como este y esta en la central de GUIFI.NET.&lt;br /&gt;
Desde aquí se crea el archivo CNML que se lo cede a los clientes SNPServices. Esta información se necesita para que los servicios SNPServices locales hagan sus comprobaciones de los sistemas cercanos.&lt;br /&gt;
Básicamente SNPServices sirve recopilar información general de la red que esta en la BBDD de GUIFI. Cuando un cliente SNPServices le pide información de su red, el servidor se la concede en formato CNML.&lt;br /&gt;
&lt;br /&gt;
=== Instalacion del servicio SNPServices ===&lt;br /&gt;
El servicio SNPServices Master y Cliente se instala del mismo modo.&lt;br /&gt;
A diferencia entre ambos es que usan procedimientos diferentes en al ejecución de sus tareas. También alguno común.&lt;br /&gt;
&lt;br /&gt;
Para instalarlo se hace así&lt;br /&gt;
Nos creamos una cuenta en el repositorio gitorius. Clonamos el servicio snpservices para poder enviar nuestras mejoras. Lo descargamos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /var/www/html&lt;br /&gt;
git clone git://gitorious.org/guifi/snpservices.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
También se puede descargar mediante repositorio.&lt;br /&gt;
http://es.wiki.guifi.net/wiki/Configurar_Repositorio_apt_guifi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Configurar_Repositorio_apt_guifi|Configurar el Repositorio de apt de Guifi]]&lt;br /&gt;
&lt;br /&gt;
Una vez configurado el repositorio, descargamos servicio.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# apt-get install snpservices&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si quieres instalar el servicio SNPServices para servir gráficas sigue los pasos aqui&lt;br /&gt;
http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas&lt;br /&gt;
&lt;br /&gt;
A partir de ahora configuraremos el servicio SNPServices Master para servir datos a los clientes SNPServicves&lt;br /&gt;
&lt;br /&gt;
=== Configuración del servicio SNPServices Master ===&lt;br /&gt;
&lt;br /&gt;
.Se crea un alias que apunte a nuestra carpeta donde hemos instalado el servicio&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; Alias /snpservices /var/www/html/snpservices &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
. Creas la rarpeta /tmp y le das permisos de escritura&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;mkdir /tmp&lt;br /&gt;
chmod a+rw snpservices/tmp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
.Crea els ervicio en al base  de datos usando esta direccion&lt;br /&gt;
&amp;lt;pre&amp;gt; http://yourserver/snpservices&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
te saldra una pagina asi&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ERROR: No service specified&lt;br /&gt;
CNML services&lt;br /&gt;
Version: 2.0&lt;br /&gt;
USAGE:&lt;br /&gt;
index.php?call=[service][&amp;amp;parameter[=value]]&lt;br /&gt;
&lt;br /&gt;
services: help version phpinfo serverinfo [service]&lt;br /&gt;
  help&lt;br /&gt;
...sigue...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
si fueras un cliente, el procedimiento continua cambiando el servidor root al que te conectas modificando el archivo /common/config.php.&lt;br /&gt;
Es pro esto que nos sale el error &amp;quot;ERROR: No service specified&amp;quot;, pero en este caso nosotros somos el roor y aqui tenemos que poner 3671 que representa al servidor web.&lt;br /&gt;
Tenemos un archivo llamado common/config.php.template que nos servirá de plantilla&lt;br /&gt;
&lt;br /&gt;
=== Configuración del archivo config.php ===&lt;br /&gt;
Vamos al grano.&lt;br /&gt;
&lt;br /&gt;
Aquí se configura el directorio raiz del servicio SNP. Esta variable es usada en varios sitios.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// snp_pat: full directory where snp services are located&lt;br /&gt;
$snp_path='/var/www/html/snpservices';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Este es el numero de nodo que nos ha dado el servidor web al crear el servicio SNP Cliente.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// SNPGraphServerID: Default Graph Server ID&lt;br /&gt;
$SNPGraphServerId = 6579;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Servicio root. El root de nuestro servidor guifi actual es el 3671&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// rootZone: which is the ROOT zone&lt;br /&gt;
$rootZone = 3671;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aqui la direccion desde donde se enlaza a los servicios mediante web. Esta variable es usada en varios archivos de configuracion&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// SNPDataServer_url: without ending backslash, the url where the data is&lt;br /&gt;
$SNPDataServer_url = 'http://guifi.net';&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuracion del servicio MRTG creador de gráficas. Aqui le diremos donde almacenar los datos.&lt;br /&gt;
Tienes que crear el directorio mrtg en /snpservices/mrtg&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// MRTGConfigSource: mrtg csv data&lt;br /&gt;
// As a input, could be either a local (to be created from&lt;br /&gt;
// cached CNML file, or remote&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
El programa cnml2mrtfcsv es el servicio SNPService principal y busca en la BBDD del servidor web los cambios que han habido. Si ha cambiado algo desde la ultima actualización, genera de nuevo el archivo CNML.&lt;br /&gt;
Se tiene que modificar a la ruta que tengamos nosotros, normalmente dentro de ./graphs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$MRTGConfigSource='http://proves.elserrat.guifi.net/snpservices/graphs/cnml2mrtgcsv.php';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Aqui almacenamos los datos mrtg que recojamos. La carpeta data no esta creada por defecto. La tenemos que crear mediante mkdir data desde el directorio snpservice&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//$MRTGConfigSource='../data/guifi_mrtg.csv';&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Configuracino para la creacion de archivo CNML&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// CNMLSource: url for CNML node query, use sprintf syntax&lt;br /&gt;
// MySQL-drupal source&lt;br /&gt;
//$CNMLSource='http://proves.elserrat.guifi.net/guifi/cnml/%s/node';&lt;br /&gt;
// Cached CNML source (prefered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Aqui almacenamos los datos CNML que recojamos&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$CNMLSource='http://proves.elserrat.guifi.net/snpservices/common/qnodes.php?nodes=%s';&lt;br /&gt;
$CNMLData='../data/guifi.cnml';&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Configuracion de herramienta rrdtool. transforma tdatos en archivi .rrd para poder ser exportado. No hace falta hacer nada aqui&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// rrdtool parameters&lt;br /&gt;
$rrdtool_path='/usr/bin/rrdtool';&lt;br /&gt;
$rrddb_path='/home1/comesfa/mrtg/logs/';&lt;br /&gt;
$rrdimg_path='/home1/comesfa/mrtg/images/';&lt;br /&gt;
&lt;br /&gt;
// which version does have this server? &lt;br /&gt;
// currently supported versions are:&lt;br /&gt;
// 1.2&lt;br /&gt;
// 1.3&lt;br /&gt;
$rrdtool_version = &amp;quot;1.3&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Configuracion de entorno MRTG. No hace falta hacer nada aqui&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// mrtg local header&lt;br /&gt;
$rrdtool_header='# PathAdd: /usr/local/rrdtool-1.2.12/bin&lt;br /&gt;
# LibAdd: /usr/local/rrdtool-1.2.12/lib/perl/5.8.8/i386-linux-thread-multi&lt;br /&gt;
HtmlDir: %s&lt;br /&gt;
ImageDir: %s &lt;br /&gt;
LogDir: %s&lt;br /&gt;
LogFormat: rrdtool&lt;br /&gt;
ThreshDir: %s&lt;br /&gt;
Forks: 12&lt;br /&gt;
';&lt;br /&gt;
&lt;br /&gt;
// mrtg ping template&lt;br /&gt;
$mrtg_ping_template ='Title[%s_ping]: Temps del ping de %s &lt;br /&gt;
PageTop[%s_ping]: &amp;lt;H1&amp;gt;Lat&amp;amp;egrave;ncia %s&amp;lt;/H1&amp;gt;&lt;br /&gt;
     &amp;lt;TABLE&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;System:&amp;lt;/TD&amp;gt;     &amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Maintainer:&amp;lt;/TD&amp;gt; &amp;lt;TD&amp;gt;guifi@guifi.net&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Description:&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;ping&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;IP:&amp;lt;/TD&amp;gt;         &amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;/TABLE&amp;gt;&lt;br /&gt;
Target[%s_ping]: `/etc/mrtg/ping.sh %s`&lt;br /&gt;
MaxBytes[%s_ping]: 2000&lt;br /&gt;
Options[%s_ping]: growright,unknaszero,nopercent,gauge&lt;br /&gt;
LegendI[%s_ping]: Perduts %&lt;br /&gt;
LegendO[%s_ping]: Temps mig&lt;br /&gt;
Legend1[%s_ping]: Temps max. en ms&lt;br /&gt;
Legend2[%s_ping]: Temps min. en ms&lt;br /&gt;
YLegend[%s_ping]: RTT (ms)&lt;br /&gt;
';&lt;br /&gt;
&lt;br /&gt;
$mrtg_traffic_template='Target[%s_traf]: %s:public@%s:&lt;br /&gt;
SetEnv[%s_traf]: MRTG_INT_IP=&amp;quot;%s&amp;quot; MRTG_INT_DESCR=&amp;quot;%s&amp;quot;&lt;br /&gt;
MaxBytes[%s_traf]: 104857600&lt;br /&gt;
Title[%s_traf]: Tr&amp;amp;agrave;nsit a %s de %s&lt;br /&gt;
PageTop[%s_traf]: &amp;lt;H1&amp;gt;Tr&amp;amp;agrave;nsit a %s de %s&amp;lt;/H1&amp;gt;&lt;br /&gt;
     &amp;lt;TABLE&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;System:&amp;lt;/TD&amp;gt;     &amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Maintainer:&amp;lt;/TD&amp;gt; &amp;lt;TD&amp;gt;guifi@guifi.net&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Description:&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Max Speed:&amp;lt;/TD&amp;gt;  &amp;lt;TD&amp;gt;100.0 Mbytes/s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;/TABLE&amp;gt;&lt;br /&gt;
';&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arrancamos y actualizamos datos ===&lt;br /&gt;
Para arrancar y actualizar datos se hace mediante un comando llamado refresh.sh&lt;br /&gt;
Mas adelante configuraremos para que refresque solo. Primero lo ejecutaremos manualmente&lt;br /&gt;
&lt;br /&gt;
Lo he arrancado y me da el siguiente error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# ./refresh.sh &lt;br /&gt;
Getting CNML file&lt;br /&gt;
Error redaing CNML source\nroot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Esto es porque no hay configurado algu parametro. Entramos en refresh.sh y este nos envia a refresh.cnml.php&lt;br /&gt;
refress.sh llama a dos archivos php.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# cat refresh.sh &lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# Refreshing CNML local file (optional)&lt;br /&gt;
php refresh_cnml.php&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configurar refresh.cnml.php ===&lt;br /&gt;
Veamos ahora el archivo de configuracion refresh.cnml.php&lt;br /&gt;
&lt;br /&gt;
Si queremos ejecutar este archivo lo hacemos mediante la llamada a php&lt;br /&gt;
Aqui vemos que error genera y podremos ir a ver donde esta ocurriendo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Este es el archivo. Primero carga una configuración común en el archivo config.php. Sino busca la plantilla config.php.template&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
  if (file_exists(&amp;quot;config.php&amp;quot;)) {&lt;br /&gt;
    include_once(&amp;quot;./config.php&amp;quot;);&lt;br /&gt;
  } else {&lt;br /&gt;
    include_once(&amp;quot;config.php.template&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  $minX = 999;&lt;br /&gt;
  $minY = 999;&lt;br /&gt;
  $maxX = -999;&lt;br /&gt;
  $maxY = -999;&lt;br /&gt;
&lt;br /&gt;
  $members = array();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Intenta abrir archivo ya creado. Tenemos que modificar la ruta donde almacena esta informacion. Compara la fecha de actualización anterior y la actual para decidir si hacer un refresco completo o no.&lt;br /&gt;
si todo esta actualizado, ejecuta exit() y acaba.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  $hlastnow = @fopen($SNPDataServer_url.&amp;quot;/guifi/refresh/cnml&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    or die('Error reading last timestamp\n');&lt;br /&gt;
  $last_now = fgets($hlastnow);&lt;br /&gt;
  fclose($hlastnow);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_update.cnml&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
  if (($hlast) and ($last_now == fgets($hlast))) {&lt;br /&gt;
    fclose($hlast);&lt;br /&gt;
    echo &amp;quot;No changes.\n&amp;quot;;&lt;br /&gt;
    exit();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si está mal configurado estos parámetros, tendremos el siguiente error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# php refresh_cnml.php &lt;br /&gt;
Getting CNML file&lt;br /&gt;
Error reading last timestamp&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aqui es cuando empieza la búsqueda de cambios.&lt;br /&gt;
El primer open abre un archivo de la web con los contenidos. estos son comparados con el archivo que tenemos en /tmp. Si son diferentes, realiza una descarga y lo actualiza.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Getting CNML file\n&amp;quot;;&lt;br /&gt;
  $hcnml = @fopen($SNPDataServer_url.&amp;quot;/guifi/cnml/&amp;quot;.$rootZone.&amp;quot;/detail&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    or die ('Error redaing CNML source\n');&lt;br /&gt;
  $wcnml = @fopen(&amp;quot;../data/guifi.cnml.tmp&amp;quot;, &amp;quot;w&amp;quot;);&lt;br /&gt;
  while (!feof($hcnml)) {&lt;br /&gt;
    $buffer = fgets($hcnml, 4096);&lt;br /&gt;
    fwrite($wcnml,$buffer);&lt;br /&gt;
  }&lt;br /&gt;
  fclose($hcnml);&lt;br /&gt;
  fclose($wcnml);&lt;br /&gt;
  exec (&amp;quot;/bin/cp ../data/guifi.cnml.tmp ../data/guifi.cnml&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_update.cnml&amp;quot;, &amp;quot;w&amp;quot;) or die('Error!');&lt;br /&gt;
  fwrite($hlast,$last_now);&lt;br /&gt;
  fclose($hlast);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
                  &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si esta mal configurado, recibiremos este error. Tambien puede identificar falta de recursos para Apache.Mira el log de Apache.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# php refresh_cnml.php &lt;br /&gt;
Getting CNML file&lt;br /&gt;
Error redaing CNML source\n&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices[Sat May 22 00:39:01 2010] [notice] child pid 14787 exit signal Segmentation fault (11)/common#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
El sistema dentro de la web que crea el archivo CNML es un proceso de un modulo de Drupal del sistema guifi&lt;br /&gt;
Lo encontraras aqui&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/sites/all/modules/guifi/guifi_cnml.inc.php&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora tenemos dentro de /data dos archivos iguales llamados guifi.cnml i guifi.cnml.tmp con os contenidos encontrados.&lt;br /&gt;
También actualiza datos en /tmp/last_update.cnml que se usara nuevamente en la próxima actualizacion&lt;br /&gt;
&lt;br /&gt;
=== Prueba de servicio ===&lt;br /&gt;
&lt;br /&gt;
Un cliente con servici SNPService usara el servicio SNPService Master recien creado para preguntar informacion acerca un nodo de esta manera&lt;br /&gt;
http://www.guifi.net/snpservices/graphs/cnml2mrtgcsv.php?server=6558&lt;br /&gt;
&lt;br /&gt;
Esto nos devuelve un archivo CNML como este&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
46491,#VicPuigsacalm2Rd1,10.138.48.51,wlan1;VicVcPgsclm2Rd1CPE0,Planned&lt;br /&gt;
38297,#VicCnvntCrmltsRd1,10.138.160.39,ath0;Vic-1-NOVcCnvntCrmltsRd1CPE0,Working&lt;br /&gt;
45489,#Vic11Set38Rd1,10.138.168.170,wlan1;Vic-1-NOVc11St38Rd1CPE0,Planned&lt;br /&gt;
44406,#Vic11set40Rd2,10.138.101.4,ath0;Vic-1-NO11st40Rd2CPE0,Working&lt;br /&gt;
33929,#Vic11setembre25Rd1,10.138.22.87,wifi0;Vic-1-NOVc11stmbr25Rd1CPE0,Working&lt;br /&gt;
18809,#VicAGrifollRd2,10.138.14.104,6,Working&lt;br /&gt;
40356,#VicAlbergCanongeRd2,10.138.10.80,Lan/Lan;Vic-1-NOVclbrgCnngRd2CPE0,Working&lt;br /&gt;
22068,#VicAlemanyRd1,10.138.14.135,wifi0;Vic-1 NOVclmnyRd1CPE0,Working&lt;br /&gt;
30303,#VicAlemanyRd2,10.138.14.201,wifi0;Vic-1 NOVclmnyRd2CPE0,Planned&lt;br /&gt;
36620,#VicAlinaRd2,10.138.10.72,wlan1;Vic-1-NOVclnRd2CPE0,Working&lt;br /&gt;
7211,#VicAngladaRd1,10.138.10.73,Lan/Lan;VicAngladaRadio1-0,Working&lt;br /&gt;
19857,#VicAnnaBRd2,10.138.11.62,wifi0;VicVcnnBRd2CPE0,Working&lt;br /&gt;
14203,#VicAnnaMaxenchsRd1,10.138.22.41,wifi0;VicVcnnMxnchsRd1CPE0,Working&lt;br /&gt;
13655,#VicAnnaPratRd1,10.138.11.51,;VicVcnnPrtRd2CPE0,Working&lt;br /&gt;
17035,#VicAnnaSolerRd3,10.138.22.196,6,Working&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La configuracion puede que no funcione. Para ver errores, pedir a apache que nos mustre su log&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:~# tail -f /var/log/apache2/*.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Yo me he encotnrado este error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Mon Oct 22 23:27:07 2012] [error] [client 192.168.1.40] PHP Warning:  DOMDocument::load(): &lt;br /&gt;
Premature end of data in tag html line 3 in /var/www/drupal-6.26/snpservices/data/guifi.cnml, line: 149 in /var/www/drupal-6.26/snpservices/graphs/cnml2mrtgcsv.php on line 270&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tambien este. Parece que al intentar cargar la zona, da un error Apache a causa de falta de memoria al cargar todos los datos en una variable&lt;br /&gt;
Para solucioanrlo se tiene que modificar el limite d ememoria para php dentro de /etc/php5/apache/php.ini&lt;br /&gt;
La variable se llama &lt;br /&gt;
memory_limit = 128M&lt;br /&gt;
Parece que si lo pones a -1 equivale a que no tenga limite.&lt;br /&gt;
http://es1.php.net/manual/es/ini.core.php#ini.memory-limit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
==&amp;gt; /var/log/apache2/error.log &amp;lt;==&lt;br /&gt;
[Tue Oct 23 20:54:16 2012] [error] [client 192.168.1.44] PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 20 bytes) in /var/www/drupal-6.26/includes/database.mysqli.inc on line 150&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Migración de un servidor a otro ===&lt;br /&gt;
Si quieres migrar un servidor de gráficas a otro servidor manteniendo las gráficas es tan simple como configurar el snpservices con el mismo ID que el antiguo y copiar los ficheros .rrd de /var/lib/snpservices/rrdb de la máquian vieja a la nueva.&lt;br /&gt;
&lt;br /&gt;
Si la máquina nueva funciona con una arquitectura (por ejemplo, antes 32bits y ahora 64bits), los ficheros .rrd deben ser reconvertidos. Para ello hay que convertir el .rrd a XML y volver a crear el fichero .rrd a partir del XML.&lt;br /&gt;
&lt;br /&gt;
En la máquina de 32bits ejecutamos esto:&lt;br /&gt;
:rrdtool dump fitxer_32bits_.rrd &amp;gt; fitxer.xml&lt;br /&gt;
&lt;br /&gt;
Copiamos el ficheor a la nueva máquina de 64bits y ejecutamos:&lt;br /&gt;
:rrdtool restore fitxer.xml&lt;br /&gt;
&lt;br /&gt;
Y queda generado el fichero .rrd&lt;br /&gt;
&lt;br /&gt;
[[Categoría:SNPServices]]&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/SNPServices</id>
		<title>SNPServices</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/SNPServices"/>
				<updated>2012-10-23T20:30:32Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: /* Configuración del archivo config.php */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Servicio SNPServices ===&lt;br /&gt;
SNPServices es un servicio de gráficas...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El sistema de monitorización de la red se realiza mediante 3 sistemas principales. &lt;br /&gt;
Vea este documento para ver el esquema general http://es.wiki.guifi.net/wiki/Monitor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuración de servidor Cliente SNPServices'''&lt;br /&gt;
El cliente SNPServices recoge información de su red mas cercana. La almacena y se la entrega al servidor web en modo de gráficas que incrusta en el entorno de guifi.net.&lt;br /&gt;
Esta configuración es la que realizaras si quieres servir gráficos a la zona donde estas. Es muy probable que lo montes en el servidor proxy que tengáis, pero podría ser dedicado.&lt;br /&gt;
El procedimiento lo encontrarás aquí http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Servidor WEB'''&lt;br /&gt;
El servidor web de guifi, única ente que accede a las bases de datos del sistema.&lt;br /&gt;
Para montar un servicio WEB idéntico a www.guifi.net, o sea, un entorno de desarrollo se realiza mediante este procedimiento&lt;br /&gt;
http://es.wiki.guifi.net/wiki/Preparando_el_entorno_de_desarrollo&lt;br /&gt;
&lt;br /&gt;
'''Configuración de servidor MASTER SNPServices'''&lt;br /&gt;
Este servicio solo es alcanzable desde el cliente SNPServices. Solo existe un servicio como este y esta en la central de GUIFI.NET.&lt;br /&gt;
Desde aquí se crea el archivo CNML que se lo cede a los clientes SNPServices. Esta información se necesita para que los servicios SNPServices locales hagan sus comprobaciones de los sistemas cercanos.&lt;br /&gt;
Básicamente SNPServices sirve recopilar información general de la red que esta en la BBDD de GUIFI. Cuando un cliente SNPServices le pide información de su red, el servidor se la concede en formato CNML.&lt;br /&gt;
&lt;br /&gt;
=== Instalacion del servicio SNPServices ===&lt;br /&gt;
El servicio SNPServices Master y Cliente se instala del mismo modo.&lt;br /&gt;
A diferencia entre ambos es que usan procedimientos diferentes en al ejecución de sus tareas. También alguno común.&lt;br /&gt;
&lt;br /&gt;
Para instalarlo se hace así&lt;br /&gt;
Nos creamos una cuenta en el repositorio gitorius. Clonamos el servicio snpservices para poder enviar nuestras mejoras. Lo descargamos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /var/www/html&lt;br /&gt;
git clone git://gitorious.org/guifi/snpservices.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
También se puede descargar mediante repositorio.&lt;br /&gt;
http://es.wiki.guifi.net/wiki/Configurar_Repositorio_apt_guifi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Configurar_Repositorio_apt_guifi|Configurar el Repositorio de apt de Guifi]]&lt;br /&gt;
&lt;br /&gt;
Una vez configurado el repositorio, descargamos servicio.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# apt-get install snpservices&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si quieres instalar el servicio SNPServices para servir gráficas sigue los pasos aqui&lt;br /&gt;
http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas&lt;br /&gt;
&lt;br /&gt;
A partir de ahora configuraremos el servicio SNPServices Master para servir datos a los clientes SNPServicves&lt;br /&gt;
&lt;br /&gt;
=== Configuración del servicio SNPServices Master ===&lt;br /&gt;
&lt;br /&gt;
.Se crea un alias que apunte a nuestra carpeta donde hemos instalado el servicio&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; Alias /snpservices /var/www/html/snpservices &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
. Creas la rarpeta /tmp y le das permisos de escritura&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;mkdir /tmp&lt;br /&gt;
chmod a+rw snpservices/tmp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
.Crea els ervicio en al base  de datos usando esta direccion&lt;br /&gt;
&amp;lt;pre&amp;gt; http://yourserver/snpservices&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
te saldra una pagina asi&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ERROR: No service specified&lt;br /&gt;
CNML services&lt;br /&gt;
Version: 2.0&lt;br /&gt;
USAGE:&lt;br /&gt;
index.php?call=[service][&amp;amp;parameter[=value]]&lt;br /&gt;
&lt;br /&gt;
services: help version phpinfo serverinfo [service]&lt;br /&gt;
  help&lt;br /&gt;
...sigue...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
si fueras un cliente, el procedimiento continua cambiando el servidor root al que te conectas modificando el archivo /common/config.php.&lt;br /&gt;
Es pro esto que nos sale el error &amp;quot;ERROR: No service specified&amp;quot;, pero en este caso nosotros somos el roor y aqui tenemos que poner 3671 que representa al servidor web.&lt;br /&gt;
Tenemos un archivo llamado common/config.php.template que nos servirá de plantilla&lt;br /&gt;
&lt;br /&gt;
=== Configuración del archivo config.php ===&lt;br /&gt;
Vamos al grano.&lt;br /&gt;
&lt;br /&gt;
Aquí se configura el directorio raiz del servicio SNP. Esta variable es usada en varios sitios.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// snp_pat: full directory where snp services are located&lt;br /&gt;
$snp_path='/var/www/html/snpservices';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Este es el numero de nodo que nos ha dado el servidor web al crear el servicio SNP Cliente.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// SNPGraphServerID: Default Graph Server ID&lt;br /&gt;
$SNPGraphServerId = 6579;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Servicio root. El root de nuestro servidor guifi actual es el 3671&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// rootZone: which is the ROOT zone&lt;br /&gt;
$rootZone = 3671;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aqui la direccion desde donde se enlaza a los servicios mediante web. Esta variable es usada en varios archivos de configuracion&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// SNPDataServer_url: without ending backslash, the url where the data is&lt;br /&gt;
$SNPDataServer_url = 'http://guifi.net';&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuracion del servicio MRTG creador de gráficas. Aqui le diremos donde almacenar los datos.&lt;br /&gt;
Tienes que crear el directorio mrtg en /snpservices/mrtg&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// MRTGConfigSource: mrtg csv data&lt;br /&gt;
// As a input, could be either a local (to be created from&lt;br /&gt;
// cached CNML file, or remote&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
El programa cnml2mrtfcsv es el servicio SNPService principal y busca en la BBDD del servidor web los cambios que han habido. Si ha cambiado algo desde la ultima actualización, genera de nuevo el archivo CNML.&lt;br /&gt;
Se tiene que modificar a la ruta que tengamos nosotros, normalmente dentro de ./graphs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$MRTGConfigSource='http://proves.elserrat.guifi.net/snpservices/graphs/cnml2mrtgcsv.php';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Aqui almacenamos los datos mrtg que recojamos. La carpeta data no esta creada por defecto. La tenemos que crear mediante mkdir data desde el directorio snpservice&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//$MRTGConfigSource='../data/guifi_mrtg.csv';&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Configuracino para la creacion de archivo CNML&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// CNMLSource: url for CNML node query, use sprintf syntax&lt;br /&gt;
// MySQL-drupal source&lt;br /&gt;
//$CNMLSource='http://proves.elserrat.guifi.net/guifi/cnml/%s/node';&lt;br /&gt;
// Cached CNML source (prefered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Aqui almacenamos los datos CNML que recojamos&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$CNMLSource='http://proves.elserrat.guifi.net/snpservices/common/qnodes.php?nodes=%s';&lt;br /&gt;
$CNMLData='../data/guifi.cnml';&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Configuracion de herramienta rrdtool. transforma tdatos en archivi .rrd para poder ser exportado. No hace falta hacer nada aqui&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// rrdtool parameters&lt;br /&gt;
$rrdtool_path='/usr/bin/rrdtool';&lt;br /&gt;
$rrddb_path='/home1/comesfa/mrtg/logs/';&lt;br /&gt;
$rrdimg_path='/home1/comesfa/mrtg/images/';&lt;br /&gt;
&lt;br /&gt;
// which version does have this server? &lt;br /&gt;
// currently supported versions are:&lt;br /&gt;
// 1.2&lt;br /&gt;
// 1.3&lt;br /&gt;
$rrdtool_version = &amp;quot;1.3&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Configuracion de entorno MRTG. No hace falta hacer nada aqui&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// mrtg local header&lt;br /&gt;
$rrdtool_header='# PathAdd: /usr/local/rrdtool-1.2.12/bin&lt;br /&gt;
# LibAdd: /usr/local/rrdtool-1.2.12/lib/perl/5.8.8/i386-linux-thread-multi&lt;br /&gt;
HtmlDir: %s&lt;br /&gt;
ImageDir: %s &lt;br /&gt;
LogDir: %s&lt;br /&gt;
LogFormat: rrdtool&lt;br /&gt;
ThreshDir: %s&lt;br /&gt;
Forks: 12&lt;br /&gt;
';&lt;br /&gt;
&lt;br /&gt;
// mrtg ping template&lt;br /&gt;
$mrtg_ping_template ='Title[%s_ping]: Temps del ping de %s &lt;br /&gt;
PageTop[%s_ping]: &amp;lt;H1&amp;gt;Lat&amp;amp;egrave;ncia %s&amp;lt;/H1&amp;gt;&lt;br /&gt;
     &amp;lt;TABLE&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;System:&amp;lt;/TD&amp;gt;     &amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Maintainer:&amp;lt;/TD&amp;gt; &amp;lt;TD&amp;gt;guifi@guifi.net&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Description:&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;ping&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;IP:&amp;lt;/TD&amp;gt;         &amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;/TABLE&amp;gt;&lt;br /&gt;
Target[%s_ping]: `/etc/mrtg/ping.sh %s`&lt;br /&gt;
MaxBytes[%s_ping]: 2000&lt;br /&gt;
Options[%s_ping]: growright,unknaszero,nopercent,gauge&lt;br /&gt;
LegendI[%s_ping]: Perduts %&lt;br /&gt;
LegendO[%s_ping]: Temps mig&lt;br /&gt;
Legend1[%s_ping]: Temps max. en ms&lt;br /&gt;
Legend2[%s_ping]: Temps min. en ms&lt;br /&gt;
YLegend[%s_ping]: RTT (ms)&lt;br /&gt;
';&lt;br /&gt;
&lt;br /&gt;
$mrtg_traffic_template='Target[%s_traf]: %s:public@%s:&lt;br /&gt;
SetEnv[%s_traf]: MRTG_INT_IP=&amp;quot;%s&amp;quot; MRTG_INT_DESCR=&amp;quot;%s&amp;quot;&lt;br /&gt;
MaxBytes[%s_traf]: 104857600&lt;br /&gt;
Title[%s_traf]: Tr&amp;amp;agrave;nsit a %s de %s&lt;br /&gt;
PageTop[%s_traf]: &amp;lt;H1&amp;gt;Tr&amp;amp;agrave;nsit a %s de %s&amp;lt;/H1&amp;gt;&lt;br /&gt;
     &amp;lt;TABLE&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;System:&amp;lt;/TD&amp;gt;     &amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Maintainer:&amp;lt;/TD&amp;gt; &amp;lt;TD&amp;gt;guifi@guifi.net&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Description:&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Max Speed:&amp;lt;/TD&amp;gt;  &amp;lt;TD&amp;gt;100.0 Mbytes/s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;/TABLE&amp;gt;&lt;br /&gt;
';&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arrancamos y actualizamos datos ===&lt;br /&gt;
Para arrancar y actualizar datos se hace mediante un comando llamado refresh.sh&lt;br /&gt;
Mas adelante configuraremos para que refresque solo. Primero lo ejecutaremos manualmente&lt;br /&gt;
&lt;br /&gt;
Lo he arrancado y me da el siguiente error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# ./refresh.sh &lt;br /&gt;
Getting CNML file&lt;br /&gt;
Error redaing CNML source\nroot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Esto es porque no hay configurado algu parametro. Entramos en refresh.sh y este nos envia a refresh.cnml.php&lt;br /&gt;
refress.sh llama a dos archivos php.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# cat refresh.sh &lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# Refreshing CNML local file (optional)&lt;br /&gt;
php refresh_cnml.php&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configurar refresh.cnml.php ===&lt;br /&gt;
Veamos ahora el archivo de configuracion refresh.cnml.php&lt;br /&gt;
&lt;br /&gt;
Si queremos ejecutar este archivo lo hacemos mediante la llamada a php&lt;br /&gt;
Aqui vemos que error genera y podremos ir a ver donde esta ocurriendo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Este es el archivo. Primero carga una configuración común en el archivo config.php. Sino busca la plantilla config.php.template&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
  if (file_exists(&amp;quot;config.php&amp;quot;)) {&lt;br /&gt;
    include_once(&amp;quot;./config.php&amp;quot;);&lt;br /&gt;
  } else {&lt;br /&gt;
    include_once(&amp;quot;config.php.template&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  $minX = 999;&lt;br /&gt;
  $minY = 999;&lt;br /&gt;
  $maxX = -999;&lt;br /&gt;
  $maxY = -999;&lt;br /&gt;
&lt;br /&gt;
  $members = array();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Intenta abrir archivo ya creado. Tenemos que modificar la ruta donde almacena esta informacion. Compara la fecha de actualización anterior y la actual para decidir si hacer un refresco completo o no.&lt;br /&gt;
si todo esta actualizado, ejecuta exit() y acaba.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  $hlastnow = @fopen($SNPDataServer_url.&amp;quot;/guifi/refresh/cnml&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    or die('Error reading last timestamp\n');&lt;br /&gt;
  $last_now = fgets($hlastnow);&lt;br /&gt;
  fclose($hlastnow);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_update.cnml&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
  if (($hlast) and ($last_now == fgets($hlast))) {&lt;br /&gt;
    fclose($hlast);&lt;br /&gt;
    echo &amp;quot;No changes.\n&amp;quot;;&lt;br /&gt;
    exit();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si está mal configurado estos parámetros, tendremos el siguiente error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# php refresh_cnml.php &lt;br /&gt;
Getting CNML file&lt;br /&gt;
Error reading last timestamp&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aqui es cuando empieza la búsqueda de cambios.&lt;br /&gt;
El primer open abre un archivo de la web con los contenidos. estos son comparados con el archivo que tenemos en /tmp. Si son diferentes, realiza una descarga y lo actualiza.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Getting CNML file\n&amp;quot;;&lt;br /&gt;
  $hcnml = @fopen($SNPDataServer_url.&amp;quot;/guifi/cnml/&amp;quot;.$rootZone.&amp;quot;/detail&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    or die ('Error redaing CNML source\n');&lt;br /&gt;
  $wcnml = @fopen(&amp;quot;../data/guifi.cnml.tmp&amp;quot;, &amp;quot;w&amp;quot;);&lt;br /&gt;
  while (!feof($hcnml)) {&lt;br /&gt;
    $buffer = fgets($hcnml, 4096);&lt;br /&gt;
    fwrite($wcnml,$buffer);&lt;br /&gt;
  }&lt;br /&gt;
  fclose($hcnml);&lt;br /&gt;
  fclose($wcnml);&lt;br /&gt;
  exec (&amp;quot;/bin/cp ../data/guifi.cnml.tmp ../data/guifi.cnml&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_update.cnml&amp;quot;, &amp;quot;w&amp;quot;) or die('Error!');&lt;br /&gt;
  fwrite($hlast,$last_now);&lt;br /&gt;
  fclose($hlast);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
                  &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si esta mal configurado, recibiremos este error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# php refresh_cnml.php &lt;br /&gt;
Getting CNML file&lt;br /&gt;
Error redaing CNML source\n&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
El sistema dentro de la web que crea el archivo CNML es un proceso de un modulo de Drupal del sistema guifi&lt;br /&gt;
Lo encontraras aqui&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/sites/all/modules/guifi/guifi_cnml.inc.php&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora tenemos dentro de /data dos archivos iguales llamados guifi.cnml i guifi.cnml.tmp con os contenidos encontrados.&lt;br /&gt;
También actualiza datos en /tmp/last_update.cnml que se usara nuevamente en la próxima actualizacion&lt;br /&gt;
&lt;br /&gt;
=== Prueba de servicio ===&lt;br /&gt;
&lt;br /&gt;
Un cliente con servici SNPService usara el servicio SNPService Master recien creado para preguntar informacion acerca un nodo de esta manera&lt;br /&gt;
http://www.guifi.net/snpservices/graphs/cnml2mrtgcsv.php?server=6558&lt;br /&gt;
&lt;br /&gt;
Esto nos devuelve un archivo CNML como este&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
46491,#VicPuigsacalm2Rd1,10.138.48.51,wlan1;VicVcPgsclm2Rd1CPE0,Planned&lt;br /&gt;
38297,#VicCnvntCrmltsRd1,10.138.160.39,ath0;Vic-1-NOVcCnvntCrmltsRd1CPE0,Working&lt;br /&gt;
45489,#Vic11Set38Rd1,10.138.168.170,wlan1;Vic-1-NOVc11St38Rd1CPE0,Planned&lt;br /&gt;
44406,#Vic11set40Rd2,10.138.101.4,ath0;Vic-1-NO11st40Rd2CPE0,Working&lt;br /&gt;
33929,#Vic11setembre25Rd1,10.138.22.87,wifi0;Vic-1-NOVc11stmbr25Rd1CPE0,Working&lt;br /&gt;
18809,#VicAGrifollRd2,10.138.14.104,6,Working&lt;br /&gt;
40356,#VicAlbergCanongeRd2,10.138.10.80,Lan/Lan;Vic-1-NOVclbrgCnngRd2CPE0,Working&lt;br /&gt;
22068,#VicAlemanyRd1,10.138.14.135,wifi0;Vic-1 NOVclmnyRd1CPE0,Working&lt;br /&gt;
30303,#VicAlemanyRd2,10.138.14.201,wifi0;Vic-1 NOVclmnyRd2CPE0,Planned&lt;br /&gt;
36620,#VicAlinaRd2,10.138.10.72,wlan1;Vic-1-NOVclnRd2CPE0,Working&lt;br /&gt;
7211,#VicAngladaRd1,10.138.10.73,Lan/Lan;VicAngladaRadio1-0,Working&lt;br /&gt;
19857,#VicAnnaBRd2,10.138.11.62,wifi0;VicVcnnBRd2CPE0,Working&lt;br /&gt;
14203,#VicAnnaMaxenchsRd1,10.138.22.41,wifi0;VicVcnnMxnchsRd1CPE0,Working&lt;br /&gt;
13655,#VicAnnaPratRd1,10.138.11.51,;VicVcnnPrtRd2CPE0,Working&lt;br /&gt;
17035,#VicAnnaSolerRd3,10.138.22.196,6,Working&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La configuracion puede que no funcione. Para ver errores, pedir a apache que nos mustre su log&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:~# tail -f /var/log/apache2/*.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Yo me he encotnrado este error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Mon Oct 22 23:27:07 2012] [error] [client 192.168.1.40] PHP Warning:  DOMDocument::load(): &lt;br /&gt;
Premature end of data in tag html line 3 in /var/www/drupal-6.26/snpservices/data/guifi.cnml, line: 149 in /var/www/drupal-6.26/snpservices/graphs/cnml2mrtgcsv.php on line 270&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tambien este. Parece que al intentar cargar la zona, da un error Apache a causa de falta de memoria al cargar todos los datos en una variable&lt;br /&gt;
Para solucioanrlo se tiene que modificar el limite d ememoria para php dentro de /etc/php5/apache/php.ini&lt;br /&gt;
La variable se llama &lt;br /&gt;
memory_limit = 128M&lt;br /&gt;
Parece que si lo pones a -1 equivale a que no tenga limite.&lt;br /&gt;
http://es1.php.net/manual/es/ini.core.php#ini.memory-limit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
==&amp;gt; /var/log/apache2/error.log &amp;lt;==&lt;br /&gt;
[Tue Oct 23 20:54:16 2012] [error] [client 192.168.1.44] PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 20 bytes) in /var/www/drupal-6.26/includes/database.mysqli.inc on line 150&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Migración de un servidor a otro ===&lt;br /&gt;
Si quieres migrar un servidor de gráficas a otro servidor manteniendo las gráficas es tan simple como configurar el snpservices con el mismo ID que el antiguo y copiar los ficheros .rrd de /var/lib/snpservices/rrdb de la máquian vieja a la nueva.&lt;br /&gt;
&lt;br /&gt;
Si la máquina nueva funciona con una arquitectura (por ejemplo, antes 32bits y ahora 64bits), los ficheros .rrd deben ser reconvertidos. Para ello hay que convertir el .rrd a XML y volver a crear el fichero .rrd a partir del XML.&lt;br /&gt;
&lt;br /&gt;
En la máquina de 32bits ejecutamos esto:&lt;br /&gt;
:rrdtool dump fitxer_32bits_.rrd &amp;gt; fitxer.xml&lt;br /&gt;
&lt;br /&gt;
Copiamos el ficheor a la nueva máquina de 64bits y ejecutamos:&lt;br /&gt;
:rrdtool restore fitxer.xml&lt;br /&gt;
&lt;br /&gt;
Y queda generado el fichero .rrd&lt;br /&gt;
&lt;br /&gt;
[[Categoría:SNPServices]]&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/wiki/SNPServices</id>
		<title>SNPServices</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/wiki/SNPServices"/>
				<updated>2012-10-23T19:01:16Z</updated>
		
		<summary type="html">&lt;p&gt;Piura: /* Prueba de servicio */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Servicio SNPServices ===&lt;br /&gt;
SNPServices es un servicio de gráficas...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El sistema de monitorización de la red se realiza mediante 3 sistemas principales. &lt;br /&gt;
Vea este documento para ver el esquema general http://es.wiki.guifi.net/wiki/Monitor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuración de servidor Cliente SNPServices'''&lt;br /&gt;
El cliente SNPServices recoge información de su red mas cercana. La almacena y se la entrega al servidor web en modo de gráficas que incrusta en el entorno de guifi.net.&lt;br /&gt;
Esta configuración es la que realizaras si quieres servir gráficos a la zona donde estas. Es muy probable que lo montes en el servidor proxy que tengáis, pero podría ser dedicado.&lt;br /&gt;
El procedimiento lo encontrarás aquí http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Servidor WEB'''&lt;br /&gt;
El servidor web de guifi, única ente que accede a las bases de datos del sistema.&lt;br /&gt;
Para montar un servicio WEB idéntico a www.guifi.net, o sea, un entorno de desarrollo se realiza mediante este procedimiento&lt;br /&gt;
http://es.wiki.guifi.net/wiki/Preparando_el_entorno_de_desarrollo&lt;br /&gt;
&lt;br /&gt;
'''Configuración de servidor MASTER SNPServices'''&lt;br /&gt;
Este servicio solo es alcanzable desde el cliente SNPServices. Solo existe un servicio como este y esta en la central de GUIFI.NET.&lt;br /&gt;
Desde aquí se crea el archivo CNML que se lo cede a los clientes SNPServices. Esta información se necesita para que los servicios SNPServices locales hagan sus comprobaciones de los sistemas cercanos.&lt;br /&gt;
Básicamente SNPServices sirve recopilar información general de la red que esta en la BBDD de GUIFI. Cuando un cliente SNPServices le pide información de su red, el servidor se la concede en formato CNML.&lt;br /&gt;
&lt;br /&gt;
=== Instalacion del servicio SNPServices ===&lt;br /&gt;
El servicio SNPServices Master y Cliente se instala del mismo modo.&lt;br /&gt;
A diferencia entre ambos es que usan procedimientos diferentes en al ejecución de sus tareas. También alguno común.&lt;br /&gt;
&lt;br /&gt;
Para instalarlo se hace así&lt;br /&gt;
Nos creamos una cuenta en el repositorio gitorius. Clonamos el servicio snpservices para poder enviar nuestras mejoras. Lo descargamos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /var/www/html&lt;br /&gt;
git clone git://gitorious.org/guifi/snpservices.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
También se puede descargar mediante repositorio.&lt;br /&gt;
http://es.wiki.guifi.net/wiki/Configurar_Repositorio_apt_guifi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Configurar_Repositorio_apt_guifi|Configurar el Repositorio de apt de Guifi]]&lt;br /&gt;
&lt;br /&gt;
Una vez configurado el repositorio, descargamos servicio.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# apt-get install snpservices&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si quieres instalar el servicio SNPServices para servir gráficas sigue los pasos aqui&lt;br /&gt;
http://es.wiki.guifi.net/wiki/Servidor_de_gr%C3%A1ficas&lt;br /&gt;
&lt;br /&gt;
A partir de ahora configuraremos el servicio SNPServices Master para servir datos a los clientes SNPServicves&lt;br /&gt;
&lt;br /&gt;
=== Configuración del servicio SNPServices Master ===&lt;br /&gt;
&lt;br /&gt;
.Se crea un alias que apunte a nuestra carpeta donde hemos instalado el servicio&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; Alias /snpservices /var/www/html/snpservices &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
. Creas la rarpeta /tmp y le das permisos de escritura&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;mkdir /tmp&lt;br /&gt;
chmod a+rw snpservices/tmp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
.Crea els ervicio en al base  de datos usando esta direccion&lt;br /&gt;
&amp;lt;pre&amp;gt; http://yourserver/snpservices&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
te saldra una pagina asi&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ERROR: No service specified&lt;br /&gt;
CNML services&lt;br /&gt;
Version: 2.0&lt;br /&gt;
USAGE:&lt;br /&gt;
index.php?call=[service][&amp;amp;parameter[=value]]&lt;br /&gt;
&lt;br /&gt;
services: help version phpinfo serverinfo [service]&lt;br /&gt;
  help&lt;br /&gt;
...sigue...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
si fueras un cliente, el procedimiento continua cambiando el servidor root al que te conectas modificando el archivo /common/config.php.&lt;br /&gt;
Es pro esto que nos sale el error &amp;quot;ERROR: No service specified&amp;quot;, pero en este caso nosotros somos el roor y aqui tenemos que poner 3671 que representa al servidor web.&lt;br /&gt;
Tenemos un archivo llamado common/config.php.template que nos servirá de plantilla&lt;br /&gt;
&lt;br /&gt;
=== Configuración del archivo config.php ===&lt;br /&gt;
Vamos al grano.&lt;br /&gt;
&lt;br /&gt;
Aquí se configura el directorio raiz del servicio SNP. Esta variable es usada en varios sitios.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// snp_pat: full directory where snp services are located&lt;br /&gt;
$snp_path='/var/www/html/snpservices';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Este es el numero de nodo que nos ha dado el servidor web al crear el servicio SNP Cliente.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// SNPGraphServerID: Default Graph Server ID&lt;br /&gt;
$SNPGraphServerId = 6579;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Servicio root. El root de nuestro servidor guifi actual es el 3671&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// rootZone: which is the ROOT zone&lt;br /&gt;
$rootZone = 3671;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aqui la direccion desde donde se enlaza a los servicios mediante web. Esta variable es usada en varios archivos de configuracion&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// SNPDataServer_url: without ending backslash, the url where the data is&lt;br /&gt;
$SNPDataServer_url = 'http://guifi.net';&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuracion del servicio MRTG creador de gráficas. Aqui le diremos donde almacenar los datos.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// MRTGConfigSource: mrtg csv data&lt;br /&gt;
// As a input, could be either a local (to be created from&lt;br /&gt;
// cached CNML file, or remote&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
El programa cnml2mrtfcsv es el servicio SNPService principal y busca en la BBDD del servidor web los cambios que han habido. Si ha cambiado algo desde la ultima actualización, genera de nuevo el archivo CNML.&lt;br /&gt;
Se tiene que modificar a la ruta que tengamos nosotros, normalmente dentro de ./graphs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$MRTGConfigSource='http://proves.elserrat.guifi.net/snpservices/graphs/cnml2mrtgcsv.php';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Aqui almacenamos los datos mrtg que recojamos. La carpeta data no esta creada por defecto. La tenemos que crear mediante mkdir data desde el directorio snpservice&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//$MRTGConfigSource='../data/guifi_mrtg.csv';&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Configuracino para la creacion de archivo CNML&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// CNMLSource: url for CNML node query, use sprintf syntax&lt;br /&gt;
// MySQL-drupal source&lt;br /&gt;
//$CNMLSource='http://proves.elserrat.guifi.net/guifi/cnml/%s/node';&lt;br /&gt;
// Cached CNML source (prefered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Aqui almacenamos los datos CNML que recojamos&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$CNMLSource='http://proves.elserrat.guifi.net/snpservices/common/qnodes.php?nodes=%s';&lt;br /&gt;
$CNMLData='../data/guifi.cnml';&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Configuracion de herramienta rrdtool. transforma tdatos en archivi .rrd para poder ser exportado. No hace falta hacer nada aqui&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// rrdtool parameters&lt;br /&gt;
$rrdtool_path='/usr/bin/rrdtool';&lt;br /&gt;
$rrddb_path='/home1/comesfa/mrtg/logs/';&lt;br /&gt;
$rrdimg_path='/home1/comesfa/mrtg/images/';&lt;br /&gt;
&lt;br /&gt;
// which version does have this server? &lt;br /&gt;
// currently supported versions are:&lt;br /&gt;
// 1.2&lt;br /&gt;
// 1.3&lt;br /&gt;
$rrdtool_version = &amp;quot;1.3&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Configuracion de entorno MRTG. No hace falta hacer nada aqui&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// mrtg local header&lt;br /&gt;
$rrdtool_header='# PathAdd: /usr/local/rrdtool-1.2.12/bin&lt;br /&gt;
# LibAdd: /usr/local/rrdtool-1.2.12/lib/perl/5.8.8/i386-linux-thread-multi&lt;br /&gt;
HtmlDir: %s&lt;br /&gt;
ImageDir: %s &lt;br /&gt;
LogDir: %s&lt;br /&gt;
LogFormat: rrdtool&lt;br /&gt;
ThreshDir: %s&lt;br /&gt;
Forks: 12&lt;br /&gt;
';&lt;br /&gt;
&lt;br /&gt;
// mrtg ping template&lt;br /&gt;
$mrtg_ping_template ='Title[%s_ping]: Temps del ping de %s &lt;br /&gt;
PageTop[%s_ping]: &amp;lt;H1&amp;gt;Lat&amp;amp;egrave;ncia %s&amp;lt;/H1&amp;gt;&lt;br /&gt;
     &amp;lt;TABLE&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;System:&amp;lt;/TD&amp;gt;     &amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Maintainer:&amp;lt;/TD&amp;gt; &amp;lt;TD&amp;gt;guifi@guifi.net&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Description:&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;ping&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;IP:&amp;lt;/TD&amp;gt;         &amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;/TABLE&amp;gt;&lt;br /&gt;
Target[%s_ping]: `/etc/mrtg/ping.sh %s`&lt;br /&gt;
MaxBytes[%s_ping]: 2000&lt;br /&gt;
Options[%s_ping]: growright,unknaszero,nopercent,gauge&lt;br /&gt;
LegendI[%s_ping]: Perduts %&lt;br /&gt;
LegendO[%s_ping]: Temps mig&lt;br /&gt;
Legend1[%s_ping]: Temps max. en ms&lt;br /&gt;
Legend2[%s_ping]: Temps min. en ms&lt;br /&gt;
YLegend[%s_ping]: RTT (ms)&lt;br /&gt;
';&lt;br /&gt;
&lt;br /&gt;
$mrtg_traffic_template='Target[%s_traf]: %s:public@%s:&lt;br /&gt;
SetEnv[%s_traf]: MRTG_INT_IP=&amp;quot;%s&amp;quot; MRTG_INT_DESCR=&amp;quot;%s&amp;quot;&lt;br /&gt;
MaxBytes[%s_traf]: 104857600&lt;br /&gt;
Title[%s_traf]: Tr&amp;amp;agrave;nsit a %s de %s&lt;br /&gt;
PageTop[%s_traf]: &amp;lt;H1&amp;gt;Tr&amp;amp;agrave;nsit a %s de %s&amp;lt;/H1&amp;gt;&lt;br /&gt;
     &amp;lt;TABLE&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;System:&amp;lt;/TD&amp;gt;     &amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Maintainer:&amp;lt;/TD&amp;gt; &amp;lt;TD&amp;gt;guifi@guifi.net&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Description:&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;%s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Max Speed:&amp;lt;/TD&amp;gt;  &amp;lt;TD&amp;gt;100.0 Mbytes/s&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;/TABLE&amp;gt;&lt;br /&gt;
';&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arrancamos y actualizamos datos ===&lt;br /&gt;
Para arrancar y actualizar datos se hace mediante un comando llamado refresh.sh&lt;br /&gt;
Mas adelante configuraremos para que refresque solo. Primero lo ejecutaremos manualmente&lt;br /&gt;
&lt;br /&gt;
Lo he arrancado y me da el siguiente error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# ./refresh.sh &lt;br /&gt;
Getting CNML file&lt;br /&gt;
Error redaing CNML source\nroot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Esto es porque no hay configurado algu parametro. Entramos en refresh.sh y este nos envia a refresh.cnml.php&lt;br /&gt;
refress.sh llama a dos archivos php.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# cat refresh.sh &lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# Refreshing CNML local file (optional)&lt;br /&gt;
php refresh_cnml.php&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configurar refresh.cnml.php ===&lt;br /&gt;
Veamos ahora el archivo de configuracion refresh.cnml.php&lt;br /&gt;
&lt;br /&gt;
Si queremos ejecutar este archivo lo hacemos mediante la llamada a php&lt;br /&gt;
Aqui vemos que error genera y podremos ir a ver donde esta ocurriendo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Este es el archivo. Primero carga una configuración común en el archivo config.php. Sino busca la plantilla config.php.template&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
  if (file_exists(&amp;quot;config.php&amp;quot;)) {&lt;br /&gt;
    include_once(&amp;quot;./config.php&amp;quot;);&lt;br /&gt;
  } else {&lt;br /&gt;
    include_once(&amp;quot;config.php.template&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  $minX = 999;&lt;br /&gt;
  $minY = 999;&lt;br /&gt;
  $maxX = -999;&lt;br /&gt;
  $maxY = -999;&lt;br /&gt;
&lt;br /&gt;
  $members = array();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Intenta abrir archivo ya creado. Tenemos que modificar la ruta donde almacena esta informacion. Compara la fecha de actualización anterior y la actual para decidir si hacer un refresco completo o no.&lt;br /&gt;
si todo esta actualizado, ejecuta exit() y acaba.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  $hlastnow = @fopen($SNPDataServer_url.&amp;quot;/guifi/refresh/cnml&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    or die('Error reading last timestamp\n');&lt;br /&gt;
  $last_now = fgets($hlastnow);&lt;br /&gt;
  fclose($hlastnow);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_update.cnml&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
  if (($hlast) and ($last_now == fgets($hlast))) {&lt;br /&gt;
    fclose($hlast);&lt;br /&gt;
    echo &amp;quot;No changes.\n&amp;quot;;&lt;br /&gt;
    exit();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si está mal configurado estos parámetros, tendremos el siguiente error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# php refresh_cnml.php &lt;br /&gt;
Getting CNML file&lt;br /&gt;
Error reading last timestamp&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aqui es cuando empieza la búsqueda de cambios.&lt;br /&gt;
El primer open abre un archivo de la web con los contenidos. estos son comparados con el archivo que tenemos en /tmp. Si son diferentes, realiza una descarga y lo actualiza.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Getting CNML file\n&amp;quot;;&lt;br /&gt;
  $hcnml = @fopen($SNPDataServer_url.&amp;quot;/guifi/cnml/&amp;quot;.$rootZone.&amp;quot;/detail&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    or die ('Error redaing CNML source\n');&lt;br /&gt;
  $wcnml = @fopen(&amp;quot;../data/guifi.cnml.tmp&amp;quot;, &amp;quot;w&amp;quot;);&lt;br /&gt;
  while (!feof($hcnml)) {&lt;br /&gt;
    $buffer = fgets($hcnml, 4096);&lt;br /&gt;
    fwrite($wcnml,$buffer);&lt;br /&gt;
  }&lt;br /&gt;
  fclose($hcnml);&lt;br /&gt;
  fclose($wcnml);&lt;br /&gt;
  exec (&amp;quot;/bin/cp ../data/guifi.cnml.tmp ../data/guifi.cnml&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  $hlast= @fopen(&amp;quot;/tmp/last_update.cnml&amp;quot;, &amp;quot;w&amp;quot;) or die('Error!');&lt;br /&gt;
  fwrite($hlast,$last_now);&lt;br /&gt;
  fclose($hlast);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
                  &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si esta mal configurado, recibiremos este error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common# php refresh_cnml.php &lt;br /&gt;
Getting CNML file&lt;br /&gt;
Error redaing CNML source\n&lt;br /&gt;
root@webserver:/var/www/guifi/snpservices/common#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
El sistema dentro de la web que crea el archivo CNML es un proceso de un modulo de Drupal del sistema guifi&lt;br /&gt;
Lo encontraras aqui&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/sites/all/modules/guifi/guifi_cnml.inc.php&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora tenemos dentro de /data dos archivos iguales llamados guifi.cnml i guifi.cnml.tmp con os contenidos encontrados.&lt;br /&gt;
También actualiza datos en /tmp/last_update.cnml que se usara nuevamente en la próxima actualizacion&lt;br /&gt;
&lt;br /&gt;
=== Prueba de servicio ===&lt;br /&gt;
&lt;br /&gt;
Un cliente con servici SNPService usara el servicio SNPService Master recien creado para preguntar informacion acerca un nodo de esta manera&lt;br /&gt;
http://www.guifi.net/snpservices/graphs/cnml2mrtgcsv.php?server=6558&lt;br /&gt;
&lt;br /&gt;
Esto nos devuelve un archivo CNML como este&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
46491,#VicPuigsacalm2Rd1,10.138.48.51,wlan1;VicVcPgsclm2Rd1CPE0,Planned&lt;br /&gt;
38297,#VicCnvntCrmltsRd1,10.138.160.39,ath0;Vic-1-NOVcCnvntCrmltsRd1CPE0,Working&lt;br /&gt;
45489,#Vic11Set38Rd1,10.138.168.170,wlan1;Vic-1-NOVc11St38Rd1CPE0,Planned&lt;br /&gt;
44406,#Vic11set40Rd2,10.138.101.4,ath0;Vic-1-NO11st40Rd2CPE0,Working&lt;br /&gt;
33929,#Vic11setembre25Rd1,10.138.22.87,wifi0;Vic-1-NOVc11stmbr25Rd1CPE0,Working&lt;br /&gt;
18809,#VicAGrifollRd2,10.138.14.104,6,Working&lt;br /&gt;
40356,#VicAlbergCanongeRd2,10.138.10.80,Lan/Lan;Vic-1-NOVclbrgCnngRd2CPE0,Working&lt;br /&gt;
22068,#VicAlemanyRd1,10.138.14.135,wifi0;Vic-1 NOVclmnyRd1CPE0,Working&lt;br /&gt;
30303,#VicAlemanyRd2,10.138.14.201,wifi0;Vic-1 NOVclmnyRd2CPE0,Planned&lt;br /&gt;
36620,#VicAlinaRd2,10.138.10.72,wlan1;Vic-1-NOVclnRd2CPE0,Working&lt;br /&gt;
7211,#VicAngladaRd1,10.138.10.73,Lan/Lan;VicAngladaRadio1-0,Working&lt;br /&gt;
19857,#VicAnnaBRd2,10.138.11.62,wifi0;VicVcnnBRd2CPE0,Working&lt;br /&gt;
14203,#VicAnnaMaxenchsRd1,10.138.22.41,wifi0;VicVcnnMxnchsRd1CPE0,Working&lt;br /&gt;
13655,#VicAnnaPratRd1,10.138.11.51,;VicVcnnPrtRd2CPE0,Working&lt;br /&gt;
17035,#VicAnnaSolerRd3,10.138.22.196,6,Working&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La configuracion puede que no funcione. Para ver errores, pedir a apache que nos mustre su log&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@webserver:~# tail -f /var/log/apache2/*.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Yo me he encotnrado este error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Mon Oct 22 23:27:07 2012] [error] [client 192.168.1.40] PHP Warning:  DOMDocument::load(): &lt;br /&gt;
Premature end of data in tag html line 3 in /var/www/drupal-6.26/snpservices/data/guifi.cnml, line: 149 in /var/www/drupal-6.26/snpservices/graphs/cnml2mrtgcsv.php on line 270&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tambien este. Parece que al intentar cargar la zona, da un error Apache a causa de falta de memoria al cargar todos los datos en una variable&lt;br /&gt;
Para solucioanrlo se tiene que modificar el limite d ememoria para php dentro de /etc/php5/apache/php.ini&lt;br /&gt;
La variable se llama &lt;br /&gt;
memory_limit = 128M&lt;br /&gt;
Parece que si lo pones a -1 equivale a que no tenga limite.&lt;br /&gt;
http://es1.php.net/manual/es/ini.core.php#ini.memory-limit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
==&amp;gt; /var/log/apache2/error.log &amp;lt;==&lt;br /&gt;
[Tue Oct 23 20:54:16 2012] [error] [client 192.168.1.44] PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 20 bytes) in /var/www/drupal-6.26/includes/database.mysqli.inc on line 150&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Migración de un servidor a otro ===&lt;br /&gt;
Si quieres migrar un servidor de gráficas a otro servidor manteniendo las gráficas es tan simple como configurar el snpservices con el mismo ID que el antiguo y copiar los ficheros .rrd de /var/lib/snpservices/rrdb de la máquian vieja a la nueva.&lt;br /&gt;
&lt;br /&gt;
Si la máquina nueva funciona con una arquitectura (por ejemplo, antes 32bits y ahora 64bits), los ficheros .rrd deben ser reconvertidos. Para ello hay que convertir el .rrd a XML y volver a crear el fichero .rrd a partir del XML.&lt;br /&gt;
&lt;br /&gt;
En la máquina de 32bits ejecutamos esto:&lt;br /&gt;
:rrdtool dump fitxer_32bits_.rrd &amp;gt; fitxer.xml&lt;br /&gt;
&lt;br /&gt;
Copiamos el ficheor a la nueva máquina de 64bits y ejecutamos:&lt;br /&gt;
:rrdtool restore fitxer.xml&lt;br /&gt;
&lt;br /&gt;
Y queda generado el fichero .rrd&lt;br /&gt;
&lt;br /&gt;
[[Categoría:SNPServices]]&lt;/div&gt;</summary>
		<author><name>Piura</name></author>	</entry>

	</feed>