Resumir .sh em .desktop [RESOLVIDO]

1. Resumir .sh em .desktop [RESOLVIDO]

Wellington
wellington_r

(usa Debian)

Enviado em 11/04/2014 - 12:31h

Olá, pessoas.

Tenho um arquivo .desktop com o seguinte conteúdo:

#!/usr/bin/env xdg-open
[Desktop Entry]
Name=Programa
Exec=sh ~/.scripts/atalhos/teste.sh
Icon=wine
Terminal=false
Type=Application
Categories=Wine;
StartupNotify=true


E o arquivo teste.sh com o seguinte conteúdo:

#!/bin/sh

# -q quiet
# -c nb of pings to perform

ping -q -c5 192.168.0.1 > /dev/null

if [ $? -eq 0 ]
then
cd /mnt/pasta/executaveis
wine programa.exe
else
echo "não conectado"
fi


Caso alguém não tenha entendido o que eu fiz: criei um atalho (.desktop) que executa o teste.sh, cujo conteúdo consiste em tentar pingar o servidor no qual se encontra o executável; caso o script consiga pingar o servidor, ele executa o executável (?), caso contrário ele exibe a mensagem "não conectado". A ideia é: se o servidor estiver online, execute, senão, exiba uma mensagem de erro.

OBS: Eu sei que esse "echo" não vai funcionar, uma vez que o atalho será executado em modo gráfico através do Nautilus, mas coloquei o comando lá só para vocês terem a ideia de que pretendo mostrar uma mensagem de falha na conexão.

O meu problema é que tenho vários executáveis para fazer isso e ter que criar um .desktop e um .sh para cada executável no servidor é muito complicado. Eu gostaria de saber como fazer para colocar a lógica do .sh já no Exec no .desktop.

E se alguém tiver uma ideia melhor do que o ping para verificar se o servidor está online, ou de como mostrar uma mensagem gráfica para o usuário (acho que esse último não ter uma solução), me ajudaria também.

Agradeço desde já!


  


2. Re: Resumir .sh em .desktop [RESOLVIDO]

Alberto Federman Neto.
albfneto

(usa openSUSE)

Enviado em 12/04/2014 - 17:36h

o problema é que "não pingar", acho , não seria considerado falha de comando ping,não?

pq se fosse talvez pudesse fazer assim:

$ comando1 || comando2

o comando 2 só executa se o comando um falhar.


3. Re: Resumir .sh em .desktop [RESOLVIDO]

André Canhadas
andrecanhadas

(usa Debian)

Enviado em 12/04/2014 - 22:01h

Se usar python para o script as mensagens serão exibidas:
http://www.vivaolinux.com.br/script/Verifica-conexao-Ping


4. Re: Resumir .sh em .desktop [RESOLVIDO]

Wellington
wellington_r

(usa Debian)

Enviado em 06/05/2014 - 16:45h

Obrigado aos que responderam.

Consegui encontrar uma solução para o meu problema dessa forma:


#!/usr/bin/env xdg-open
[Desktop Entry]
Name=foobar
Exec=sh -c "ping -q -c1 192.168.0.7 && (cd /mnt/diretorio/executaveis; wine foobar.exe) || zenity --warning --text=\"Conexão com o servidor\nnão disponível.\nEntrar em contato \ncom o setor de TI.\" "
Icon=logofoo
Terminal=false
Type=Application
Categories=Wine;
StartupNotify=true


Eliminei a necessidade do .sh criando o comando em apenas uma linha, e ao invés de do if..else usei && e ||, e para diminuir o tempo para abertura do programa, diminui o parâmetro c do ping para 1, para pingar apenas uma vez.
O que o comando do Exec faz é tentar pingar uma vez no servidor de executáveis, caso consiga, ele executa o arquivo, caso não consiga, exibe uma mensagem de erro (com a ajuda do pacote zenity que serve para exibir mensagens em GUI dentro de de um shellscript).

Mais informações a respeito de pacotes para exibição de mensagem gráfica em scripts, podem ser encontradas aqui:
http://stackoverflow.com/questions/7035/how-to-show-a-message-box-from-a-bash-script-in-linux

Mais informações a respeito do zenity podem ser encontradas aqui:
http://manpages.ubuntu.com/manpages/lucid/en/man1/zenity.1.html






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts