lunes, 1 de abril de 2013

Screen una terminal que puede ser inmortal

El motivo de esta entrada y el título es para hablar de uno de los programas de terminal que desde mi punto de vista es de los más potentes e importantes que hay que saber dominar, el comando screen.

Este programa sirve para crear terminales de forma que nos podemos desenganchar de ellas y que sigan ejecutándose y en un futuro volvernos a enganchar, es muy útil para administrar sistemas remotamente, usando el protocolo ssh, por ejemplo. Imaginemos que tenemos un ordenador remoto que usa debian y necesitamos actualizar el sistema. Por lo general lo haríamos mediante apt-get upgrade, pero este proceso dependiendo de lo que tenga que actualizar puede tardar un rato en ejecutarse y nosotros por la razón que sea, podemos tener la necesidad de cerrar la conexión remota. Sino lo hacemos con un programa tipo screen, al cerrar la conexión remota, se interrumpiría el proceso de actualización.

Suele venir por defecto en muchas distribuciones de linux, pero sino viene, seguro que estará en el respectivo gestor de paquetes de nuestra distribución, por ejemplo, para distribuciones basadas en debian, que pueden ser ubuntu, linux mint y raspbian entre otras, lo instalamos.


  • sudo apt-get update
  • sudo apt-get install screen

Vamos a poner un ejemplo típico de uso:

  • screen -S prueba

Con esto creamos un terminal que nos podremos referir usando la étiqueta prueba, mediante el parámetro -S le ponemos la étiqueta.

En este terminal, podemos ejecutar un proceso infinito, por ejemplo

  • ping terra.es

Para desconectarnos del terminal y que el proceso se siga ejecutando, pulsamos las teclas Ctrl + a  d. Con esto nos hemos desenganchado de la sesión etiquetada como prueba, pero el proceso se sigue ejecutando.

Si en un futuro queremos volver a conectarnos a ese proceso ejecutaríamos

  • screen -r -S prueba

y nos engancharíamos de nuevo a la terminal y al proceso. Este es el uso básico del comando, permite crear varias shells a la vez incluso en varias pantallas (cuando eso se hace, la shell principal se divide en dos) y se puede ir alternando entre shells.

Si quisiéramos por ejemplo lanzar un proceso en ejecución en un screen y que actuará en background, se haría:


  • screen -d -m -S procesoPing ping terra.es

Eso lanzaría un screen ejecutando el comando ping terra.es, que nos podríamos conectar a dicho screen de dos formas o a través del PID o a través de la etiqueta procesoPing.

  • screen -r PID
o bien

  • screen -r -S procesoPing

también podemos ver una lista de los diferentes screen que hay en marcha:

  • screen -list

De ahí podemos obtener el PID para engancharnos o ver las diferentes etiquetas que hemos definido al lanzar los procesos.

El PID también lo podemos ver si hacemos una búsqueda con el comando ps

  • ps axu | grep -i screen

O bien, si ejecutamos screen -r sin nada más nos saldrán las diferentes screen que tenemos en marcha.


Para más información aquí hay un excelente tutorial de uso.

lunes, 25 de marzo de 2013

Instalar OpenELEC en la raspberry

Hoy voy a explicar como se instala la distribución openELEC, según dicen es la que mejor va para usar la raspberry como media center. Mi otra raspberry la probaré de configurar con esta distribución. Vamos allá...

Primero que nada tenemos que tener una tarjeta SD, mínimo de 4GB, yo voy a usar una Kingston microsdhc de 8GB de class 10.

Voy a explicar la configuración desde un sistema linux, concretamente ubuntu que es de donde lo voy a hacer. Pero puede servir cualquier linux.

Primero que nada insertamos la tarjeta en un lector y averiguamos el dispositivo con el que se identifica



  • sudo fdisk -l
Nos saldrá un listado donde aparecerán los distintos dispositivos de almacenamiento que tenemos conectados, normalmente saldrá el disco duro y sus particiones y luego la tarjeta que hemos insertado. Un truco por si no nos aclaramos es ejecutar el comando sin tener conectada la tarjeta en nuestro pc y luego meter la tarjeta y ejecutar de nuevo el comando, el dispositivo que aparezca diferente, ese es la tarjeta.

en mi caso se llama /dev/mmcblk0 .

Una vez tenemos el dispositivo, descargamos la imagen de la distribución desde su página oficial, en el caso de openELEC, tenemos una versión recién sacada del horno a día de hoy.

http://openelec.thestateofme.com/OpenELEC-RPi.arm-3.0.0.tar.bz2

La descargamos o bien con el navegador o mediante comandos que es bien sencillo, para ello usaremos el wget, sino lo tuviéramos lo instalaríamos. En el caso de ubuntu para instalarlo:

  • sudo apt-get update
  • sudo apt-get install wget
Una vez tenemos el wget descargado, lo usamos de la siguiente forma:

  • wget "http://openelec.thestateofme.com/OpenELEC-RPi.arm-3.0.0.tar.bz2"

Nota: el wget admite múltiples parámetros, por ejemplo el parámetro -O fichero, haciendo que la descarga se guarde en fichero. Sino indicamos nada, cogerá el valor por defecto que es el fichero en el cual apunta, en este caso OpenELEC-RPi.arm-3.0.0.img.zip

Una vez lo tenemos descargado como es un zip lo extraemos.

  • tar xvjf OpenELEC-RPi.arm-3.0.0.tar.bz2
Quedando una carpeta OpenELEC-RPi.arm-3.0.0

Finalmente, abrimos la carpeta


  • cd OpenELEC-RPi.arm-3.0.0
y dentro, encontraremos un fichero llamado create_sdcard,
que como su nombre indica, es para instalar el openELEC 3.0 en nuestra sd.

Para ello tenemos que ejecutar:

  • sudo ./create_sdcard sd
Donde sd es el dispositivo que hemos averiguado inicialmente, en mi caso se llama /dev/mmcblk0, una vez termine el proceso, se ha instalado el sistema operativo en la sd y sólo nos queda insertarlo en la raspberry y disfrutar de este media center.



domingo, 24 de marzo de 2013

Instalar y configurar amule-daemon, para usar con emule en la raspberry

En esta entrada, voy a explicar como se configura el amule-daemon en una raspberry pi, pero se puede adaptar en general a cualquier distribución de linux basada en debian, como podría ser ubuntu. El usar la versión del amule en modo daemon permite que el servicio pueda ejecutarse sin tener cargado ningún entorno gráfico y suele ser mucho más liviano. Luego para conectarse y añadir enlaces de descarga, usaremos la interfaz web que proporciona o instalando un programa llamado amulegui, que como su nombre indica es un GUI del amule.



Lo primero que debemos hacer antes de instalar cualquier paquete, es actualizar el árbol de dependencias, para ello en raspbian, se hace así:


  • sudo apt-get install
A continuación, es aconsejable actualizar el sistema.

  • sudo apt-get -y upgrade
El parámetro -y , sirve para que acepte con yes a la pregunta si queremos instalar los paquetes. A continuación, sería recomendable reiniciar nuestro ordenador.

  • sudo reboot
Una vez tengamos la raspberry funcionando de nuevo, instalamos el amule-daemon

  • sudo apt-get install amule-daemon
Seguramente vamos a desear, que nuestro amule se inicie cada vez que la raspberry se ponga en marcha, para ello tenemos que editar como root el fichero /etc/default/amule-daemon.

  • sudo vim /etc/default/amule-daemon

En el fichero encontraremos una línea que pone:

# The init.d script will only run if this variable non-empty.
AMULED_USER=""

debemos poner un usuario, yo he puesto pi, cuando el script de inicialización en un futuro vea que la variable tiene un nombre y no está vacía, sabrá que tiene que iniciar el servicio.

Una vez hecho esto, es recomendable iniciar el servicio, para que en nuestro home, cree la carpeta oculta .aMule y dentro los diferentes ficheros de configuración.

  • sudo /etc/init.d/amule-daemon start
  • sudo /etc/init.d/amule-daemon stop

Lo iniciamos, para luego pararlo, ya que aún no está preparado para usarse.

A continuación tenemos que editar el fichero de configuración con el editor de texto que queramos, yo lo hago con el vim.

  • vim $HOME/.aMule/amule.conf
Y dentro de este fichero tenemos que modificar los parámetros a nuestro gusto por ejemplo, este es el mío.

[Statistics]
MaxClientVersions=0
[eMule]
AppVersion=2.3.1
Nick=http://www.aMule.org
NewVersionCheck=1
StartupMinimized=0
ConfirmExit=1
EnableTrayIcon=0
MinToTray=0
ToolTipDelay=1
VideoPlayer=
VideoPreviewBackupped=1
MaxDownload=0
MaxUpload=15
SlotAllocation=2
Port=5668
UDPPort=5663
Address=
MaxSourcesPerFile=300
MaxConnections=500
ConnectToED2K=1
ConnectToKad=1
UPnPEnabled=0
UPnPTCPPort=50000
Autoconnect=1
Reconnect=1
ShowOverhead=0
RemoveDeadServer=1
DeadServerRetry=3
Serverlist=1
AddServerListFromServer=0
AddServerListFromClient=0
Scoresystem=1
SmartIdCheck=1
SafeServerConnect=0
AutoConnectStaticOnly=0
ManualHighPrio=0
ICH=1
AICHTrust=0
AddNewFilesPaused=0
DAPPref=1
PreviewPrio=0
UAPPref=1
FullChunkTransfers=1
StartNextFile=0
StartNextFileSameCat=0
CheckDiskspace=1
MinFreeDiskSpace=1
AllocateFullFile=0
IncomingDir=/media/THOSIBAFAT/.aMule/Incoming
TempDir=/media/THOSIBAFAT/Temp
ShareHiddenFiles=1
StatGraphsInterval=3
StatsAverageMinutes=5
VariousStatisticsMaxValue=100
statsInterval=30
DownloadCapacity=300
UploadCapacity=100
MaxConnectionsPerFiveSeconds=20
FileBufferSizePref=16
QueueSizePref=50
ServerKeepAliveTimeout=0
3DDepth=5
AutoSortDownloads=0
ShowInfoOnCatTabs=1
ShowRatesOnTitle=0
VerticalToolbar=0
ShowPartFileNumber=0
SeeShare=2
IPFilterURL=http://sites.google.com/site/ircemulespanish/descargas-2/ipfilter.zip
IPFilterAutoLoad=1
FilterLevel=127
FilterLanIPs=1
ParanoidFiltering=1
IPFilterSystem=0
OnlineSignature=0
OnlineSignatureUpdate=5
OSDirectory=/home/pi/.aMule/
FilterMessages=1
FilterAllMessages=0
MessagesFromFriendsOnly=0
MessageFromValidSourcesOnly=1
FilterWordMessages=0
MessageFilter=
FilterComments=0
CommentFilter=
Language=
SplitterbarPosition=75
YourHostname=
DateTimeFormat=%A, %x, %X
AllcatType=0
ShowAllNotCats=0
SmartIdState=1
DropSlowSources=0
KadNodesUrl=http://emule-inside.net/nodes.dat
Ed2kServersUrl=http://sites.google.com/site/ircemulespanish/descargas-2/server.met?attredirects=0&d=1
StatColor0=4194304
StatColor1=16761024
StatColor2=8454016
StatColor3=53760
StatColor4=32768
StatColor5=8421631
StatColor6=200
StatColor7=140
StatColor8=16750230
StatColor9=12583104
StatColor10=8454143
StatColor11=0
StatColor12=8454016
StatColor13=53760
StatColor14=32768
TableOrderingServer=U:1:0,p:0:0,N:0:0
TableWidthsServer=N:150,A:140,P:25,D:150,p:25,U:116,F:45,r:60,f:40,S:40,V:80
TableOrderingDownload=N:0:0
TableWidthsDownload=a:30,N:260,Z:60,T:65,C:65,S:65,P:170,u:50,p:55,s:70,r:110,c:220,R:220
TableOrderingUploads=0 0, 
TableWidthsUploads=150,275,100,60,65,60,60,110,100,100,100
TableOrderingShared=N:0:0
TableWidthsShared=N:250,Z:100,Y:50,p:70,I:220,Q:100,A:100,T:120,R:100,P:120,C:120,D:220
TableOrderingSources=N:0:0
TableWidthsSources=N:260,D:65,S:65,U:65,P:170,V:50,q:55,O:110,F:200,R:200,m:100
TableOrderingPeers=N:0:0
TableWidthsPeers=N:260,D:65,S:65,U:65,s:65,A:170,V:50,Q:70,q:70,O:110,f:200,m:100
UDPEnable=1
StartNextFileAlpha=0
GeoIPEnabled=1
ShowVersionOnTitle=0
ShowMessagesInLog=1
AdvancedSpamFilter=1
MessageUseCaptchas=1
GeoLiteCountryUpdateUrl=http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
StatsServerName=Shorty's ED2K stats
StatsServerURL=http://ed2k.shortypower.dyndns.org/?hash=
[Browser]
DefaultBrowser=0
CustomBrowserString=
OpenPageInTab=1
[ExternalConnect]
UseSrcSeeds=0
ShowPercent=1
ShowProgressBar=1
AcceptExternalConnections=1
ECPassword= Aquí va la password que queremos
ECAddress=
ECPort=12345
UPnPECEnabled=0
IpFilterClients=1
IpFilterServers=1
UseSecIdent=1
TransmitOnlyUploadingClients=0
[SkinGUIOptions]
Skin=System:kde4.zip
[Razor_Preferences]
FastED2KLinksHandler=1
SRV_SPLITTER_POS=305
MAIN_X_POS=0
MAIN_Y_POS=0
MAIN_X_SIZE=1024
MAIN_Y_SIZE=724
Maximized=1
[WebServer]
Enabled=1
Port=4711
UPnPWebServerEnabled=0
WebUPnPTCPPort=50001
PageRefreshTime=120
UseGzip=1
UseLowRightsUser=0
Password=Aquñi va la password que queremos para la interfaz web
PasswordLow=
Template=default
Path=amuleweb
[Obfuscation]
IsClientCryptLayerSupported=1
IsCryptLayerRequested=1
IsClientCryptLayerRequired=0
CryptoPaddingLenght=254
CryptoKadUDPKey=1829164279
[Proxy]
ProxyEnableProxy=0
ProxyType=0
ProxyName=
ProxyPort=1080
ProxyEnablePassword=0
ProxyUser=
ProxyPassword=
[UserEvents]
[UserEvents/DownloadCompleted]
CoreEnabled=0
CoreCommand=
GUIEnabled=0
GUICommand=
[UserEvents/NewChatSession]
CoreEnabled=0
CoreCommand=
GUIEnabled=0
GUICommand=
[UserEvents/OutOfDiskSpace]
CoreEnabled=0
CoreCommand=
GUIEnabled=0
GUICommand=
[UserEvents/ErrorOnCompletion]
CoreEnabled=0
CoreCommand=
GUIEnabled=0
GUICommand=
[GUI]
HideOnClose=0
[GUI/TransferWnd]
Splitter=445
ShowClientList=1
[HTTPDownload]
URL_4=http://amule.sourceforge.net/lastversion
[PowerManagement]
PreventSleepWhileDownloading=0

Para tener correctamente configurado el emule, es importante prestar atención en especial a las variables que contienen los puertos. Estás son:

  • Port=5668   #Este es el que está en la sección [eMule] y es de tipo TCP
  • UDPPort=5663 # sección [eMule] este es de tipo UDP es el que usa KAD
Estos puertos junto con el  Port + 3 que tiene que ser de tipo UDP tienen que estar accesibles desde fuera, en mi caso necesito configurar en mi router que:

  • El puerto 5668 en el que se me ve desde internet, se redireccione a el 5668 de la ip de la raspberry y sea de tipo TCP
  • El puerto Port + 3, es decir 5771 de tipo UDP que se me ve desde internet se diriga a el 5771 de la ip de la raspberry
  • El puerto 5663 de tipo UDP, también se tiene que dirigir a nuestra raspberry  

Hasta este punto deberíamos tener bien configurados los puertos en relación al funcionamiento de emule.

Luego hay otros puertos que debemos asignar que son el:
  • Port=4711 #Este está en la sección webserver
  • ECPort=12345 #Este está en la sección Browser

Otras variables interesantes son:

IncomingDir=/media/THOSIBAFAT/.aMule/Incoming  #La ruta donde se almacenarán las descargas
TempDir=/media/THOSIBAFAT/Temp #La ruta donde irán los archivos temporales
MaxDownload=0   #La velocidad máxima de descarga, yo la tengo sin límite
MaxUpload=15 # La velocidad límite de subida, esta es importante limitarla, ya que suele dar problemas si no se limita haciendo a veces imposible la navegación.
OSDirectory=/home/pi/.aMule/ #En esta le indicamos donde está la ruta principal del amule




Uno de los problemas que se suelen presentar en el emule, es el listado de servidores, es decir si tenemos buenos servidores y que no sean maliciosos, funcionaremos mucho mejor.

Para ello yo siempre sigo este magnífico tutorial de adslzone:


Y en el, podemos sacar varias cosas de interés.

Una buena URL de donde obtener buenos servidores:


En nuestro fichero de configuración esto iría en:

Ed2kServersUrl=http://sites.google.com/site/ircemulespanish/descargas-2/server.met?attredirects=0&d=1

y una lista de servidores malos que debemos evitar:


en la configuración va en la variable:

IPFilterURL=http://sites.google.com/site/ircemulespanish/descargas-2/ipfilter.zip

Aplicando estas configuraciones, tendríamos nuestro amule, preparado para descargar.

Para ponerlo en marcha si has seguido todo el tutorial, simplemente ejecutarías
  • sudo /etc/init.d/amule-daemon start
o bien reiniciando la raspberry 
  • sudo reboot
Si en algún momento se desea parar se puede hacer con un
  • sudo /etc/init.d/amule-daemon stop

Y para interactuar con el programa, desde un ordenador que disponga de un navegador simplemente ponemos:

http://[IP de la raspberry]:[PuertoWebElegido]

en mi caso: http://192.168.1.100:4711

Nos pedirá la contraseña que hemos asignado y veremos una bonita interfaz de este estilo:



Decir que abajo deberíamos ver la siguiente frase o parecida dependiendo del servidor que estemos usando:

Ed2k : Connected with high ID to UsenetNL.biz No1 [91.225.136.126:1887]Kad : Connected(OK)
Si vemos que nuestra ID es alta (hight) es que tenemos el emule perfectamente configurado, si por el contrario pone Low, debemos revisar la configuración de los puertos.

Si alguien quiere usar el amulegui, se lo descargaría en su ordenador, en ubuntu se haría así:

  • sudo apt-get install amule-utils-gui
Al ejecutarlo, nos saldrá una pantalla de bienvenida donde debemos poner los datos de conexión, usando el puerto ECPort=12345, que hayas elegido y ya tendremos la interfaz funcionando.

Y nada a disfrutar de este viejo pero muy potente programa de P2P :).

Edito: Para indicar otra variable interesante a comentar del fichero de configuración de amule.conf

AllocateFullFile=1

si esta variable está a 1, cuando añadimos un fichero, el programa reserva espacio para ese fichero. Mientras que si está a 0, el fichero temporal donde se descarga el archivo va creciendo. Suele ser mucho mejor dejarlo a 1, ya que sino, hay mucha más fragmentación en el disco y eso a la larga puede llegar a ser perjudicial para el disco duro.

sábado, 23 de marzo de 2013

Asignar una ip fija a la raspberry

Para asignar una ip fija a la raspberry pi, simplemente hay que editar el fichero /etc/network/interfaces

dejandolo más o menos así.


auto lo
iface lo inet loopback
#iface eth0 inet dhcp
iface eth0 inet static
address 192.168.1.100
gateway 192.168.1.1
netmask 255.255.255.0
allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

En este caso yo le he asignado la ip 192.168.1.100, inicialmente el sistema usa el protocolo dhcp, es decir el router le asigna una ip disponible, pero si lo tenemos así tendremos que averiguar la ip que le asigna. Una forma bastante sencilla de hacerlo, si tenemos pocas máquinas es mediante nmap.

nmap -sP 192.168.1.*  eso haría un barrido desde la ip 192.168.1.0 - 192.168.1.255 . A partir de ahí podríamos descartar y probar con las distintas máquinas. Otra forma de averiguar la ip sería a través del router en la configuración suele haber un apartado que indica todos los dispositivos que están conectados con sus respectivas ips y otra información.

Sincronizar nuestra ip con un host gratuito de noip

Muchas veces, necesitamos tener acceso a nuestra red desde Internet. Para ello existe una forma muy simple de conseguirlo y gratuita. De entre todos los servicios similares para esto, siempre he usado noip.

Primero que nada tenemos que crearnos una cuenta en noip y generar un dominio disponible, el mio es de la forma ****.no-ip.info. En la mayoría de conexiones ADSL, la ip es dinámica, por tanto es muy útil usar este tipo de servicio, para tener acceso a tu red.

Una vez tenemos la cuenta creada, necesitamos de algún modo comunicarle cada cierto tiempo al servicio nuestra ip, por si cambia. Para ello, se puede usar un software como el que proporciona noip o bien, creo que mucho más divertido, hacerlo nosotros. Para ello he creado un simple script en bash que hace el cometido. Basicamente es un bucle infinito que le comunica la ip al servidor de noip y espera 300 segundos. Esto se repite de forma indefinida.

El script que hace esto es:


#!/bin/sh
USER="" #Aquí va nuestro usuario, en el caso de noip, es el correo electrónico
PASS="" #Aquí la contraseña
HOSTNAME="" # El host que hemos generado
while [ true ]
do
wget -O - /etc/retornoCambioIp --user=$USER --password=$PASS http://dynupdate.no-ip.com/nic/update?hostname=$HOSTNAME 2> /dev/null
sleep 300
done

Si lo guardamos con el nombre de actualizaIP.sh, le deberíamos dar permisos de ejecución de la forma:

chmod u+x actualizaIP.sh

y finalmente si queremos que arranque cada vez que iniciamos el sistema se podría poner al fichero $HOME/.bashrc (este fichero, se ejecuta cada vez que hacemos login con el usuario). Por tanto en este fichero añadiríamos al final del mismo una línea que ponga ./actualizaIP.sh


Aunque esto último no es del todo seguro, es rápido de hacer pero no es del todo seguro. Voy a poner una alternativa que le da más seguridad, ya que como hemos visto tenemos que guardar la contraseña en texto claro. Así que llegados a este punto, sería mucho mejor, guardar el script en /etc/default,

sudo mv actualizaIP.sh /etc/default

Luego asegurarnos que el propietario sea root, de la forma

sudo chown root:root /etc/default/actualizaIP.sh

y finalmente quitarle todos los permisos que no son necesarios:

sudo chmod o-r,o-w,o-x /etc/default/actualizaIP.sh

Una vez hecho esto, lo ponemos en /etc/rc.local (es el último script del sistema de inicialización que se ejecuta).

IMPORTANTE: lo tenemos que poner en ese fichero de la siguiente forma:

/etc/default/actualizaIP.sh &

No se debe olvidar el &, sino el sistema no iniciaría, ya que rc.local nunca terminaría de ejecutarse.

Con esto tendríamos el problema solucionado, lo correcto debería ser convertir este script en un demonio de inicialización, pero para salir del paso, con esto me sirve.





viernes, 22 de marzo de 2013

Compartir la pantalla de la raspberry mediante el protocolo vnc

En primer lugar desde hace unos días, tengo en mi posesión una raspberry que la quiero usar para diferentes cometidos. Yo le he instalado el sistema operativo raspbian, que como se puede sacar del nombre, es un debian para la raspberry pi. 

Una de las primeras configuraciones que puede ser útil, es tener acceso a la pantalla por vnc. Para ello hay que seguir unos pasos sencillos:

sudo apt-get install x11vnc
Creamos la contraseña de la sesión de vnc:

x11vnc -storepasswd

y generamos la contraseña que se almacenará en /home/pi/.vnc/passwd


A continuación creamos un fichero donde queramos, por ejemplo yo lo tengo en /home/pi/programas

y dentro de ese fichero escribimos:

x11vnc -bg  -geometry 1440x900 -rfbauth ~/.vnc/passwd -forever -display :0
Nota: El parámetro -geometry WxH, es opcional y se puede adaptar a diferentes pantallas.

Lo guardamos, en mi caso yo le he llamado sharevnc.sh. Le damos permisos de ejecución.

chmod u+x sharevnc.sh

Y ya lo podríamos ejecutar y conectarnos con un cliente de vnc.

Puede ser interesante, hacer que cada vez que se inicie el entorno gráfico en la raspberry, poder conectarnos a través de vnc. Para ello hay que añadir como root un fichero en /etc/xdg/autostart, en mi caso yo lo he llamado sharex11.desktop y dentro de ese fichero debe haber algo así:




[Desktop Entry]
Name=VNC Autostart
Exec=/home/pi/programas/sharevnc.sh
Type=Application
Terminal=true

Presentación

Hola a todo el mundo, he creado este blog, para escribir todas las cosas que se me vayan ocurriendo. Lo usaré a modo de manual y si le es útil a alguien mucho mejor.