[Tutorial] Instalação do SMS Power View no Linux

Iniciado por Sampayu, 03 de Setembro de 2014, 02:17

tópico anterior - próximo tópico

Sampayu

INTRODUÇÃO

Em agosto/2014 eu adquiri um nobreak inteligente da marca SMS, por isto instalei o programa SMS Power View¹ para GNU/Linux. O problema foi que acabei passando por alguns contratempos. Como felizmente consegui superar todos os contratempos que surgiram, resolvi elaborar um tutorial para auxiliar quem porventura venha a vivenciar as mesmas dificuldades.

O tutorial foi subdividido em quatro seções:
1. INSTALAÇÃO
2. DESINSTALAÇÃO
3. TROUBLESHOOTING
4. AUTOMATIZAÇÃO

A seção INSTALAÇÃO ensina a instalar o SMS Power View. A seção DESINSTALAÇÃO ensina a remover o SMS Power View. A seção TROUBLESHOOTING² apresenta soluções para problemas corriqueiros cujo solucionamento já é conhecido. A seção AUTOMATIZAÇÃO ensina a automatizar a inicialização do SMS Power View durante a inicialização do sistema operacional.

Importante: atualmente (27/11/2021), meu sistema GNU/Linux é o XUbuntu 20.04 de 64 bits e eu utilizo o JRE³ proprietário da Sun/Oracle instalado manualmente. Ainda: como eu uso XUbuntu e este fórum é do Ubuntu, todos os comandos deste tutorial utilizam a sistemática do sistema de pacotes DEB e a lógica de comandos do aplicativo APT. Se você usa uma distribuição GNU/Linux diferente (que funcione somente com pacotes RPM, por exemplo), será necessário adaptar os comandos deste tutorial de acordo com as particularidades da sua distribuição GNU/Linux.

¹ O SMS Power View (SPV) é um programa monitor e gerenciador de energia para uso em nobreaks inteligentes da fabricante SMS.
² Troubleshooting é uma expressão da língua inglesa que significa algo como "resolução de problemas". Diz respeito ao processo que consiste em investigar um problema, descobrir sua origem e a solução para ele, e então registrar o método de solucionamento para que tal método/procedimento possa ser aproveitado por outros que venham a passar pelo mesmo problema.
³ JRE = Java Runtime Environment = Ambiente de Execução Java. Dentro de todo JRE existe uma JVM (Java Virtual Machine = Máquina Virtual Java). Ao contrário do que diz o manual do SPV, não é necessário instalar um JDK (Java Development Kit = Kit de Desenvolvimento Java) inteiro no seu sistema (de maneira geral, um JDK já vem com um JRE, e portanto com uma JVM): para o SPV funcionar corretamente com o Java é suficiente que você instale o JRE da Sun/Oracle. Não precisa instalar JDK não. E o JRE não precisa ser de 32 bits: se seu sistema for de 64 bits, instale o JRE de 64 bits mesmo.
Yuri Sucupira ("Sampayu")

Sampayu

#1
1.1. Instale manualmente o Java da Sun

Acesse este tutorial para saber como instalar manualmente o Sun Java. Ele deverá ser instalado em /opt/java/jre/, tal qual o tutorial ensina.

Nota: de maneira geral, dentro de um JDK (Java Development Kit = Kit de Desenvolvimento Java) existe um JRE (Java Runtime Environment = Ambiente de Execução Java) e dentro do JRE existe uma JVM (Java Virtual Machine = Máquina Virtual Java). O manual do SMS Power View (SPV) diz para instalar o JDK, porém isso não é necessário, porque o SMS Power View usa somente o JRE: se você instalar o JRE da Sun/Oracle, tal qual eu explico em meu tutorial, o SMS Power View irá funcionar (tanto que está funcionando normalmente no meu sistema).

1.2. Obtenha o SMS Power View (SPV) e também o manual de instalação dele

Acesse o website Alerta 24h, cadastre-se, efetue login no website e (somente) então acesse a página Download Center.

Agora clique no link Gerenciamento de Energia e faça download do SMS Power View (SPV) para GNU/Linux. Faça download também do manual de instalação: o manual estará em formato PDF e o SPV será um tarball, ou seja, um arquivo com extensão .tar.gz.

IMPORTANTE: caso o SMS Power View disponibilizado lá no download center da SMS não esteja funcionando em seu sistema, experimente instalar o pacote tarball da versão 3.00.01.00, que eu disponibilizei publicamente no meu OneDrive. Esse pacote foi lançado em 2016 e está funcionando normalmente com meu XUbuntu 20.04 (lançado em abril de 2020) executando o JRE de 64 bits atualmente (25/11/2021) da versão 8 e atualização 301 (que foi lançada em 27/07/2021). A versão 4.07.00.05 (lançada em 2018) também está disponível.

Nota: daqui em diante vou usar a sigla SPV no lugar de SMS Power View.

1.3. Instale alguns programas auxiliares

Para facilitar sua vida, entre no terminal do shell bash e execute este comando, que instalará dois programas:
sudo apt-get install mousepad synaptic

O Mousepad é um editor de textos bastante simples mas muito útil. O Synaptic é um poderoso gestor de pacotes DEB.

Nota: no XUBuntu, o editor de textos mais simples que geralmente vem pré-instalado é o Leafpad, que no entanto não é tão simples assim porque pode salvar arquivos em formato RTF, por exemplo. Para ter certeza de que certos arquivos (como por exemplo arquivos de script) serão gravados em formato de "texto puro" (como tem que ser), eu geralmente uso um editor supersimples, como é o caso do Mousepad. Também é útil quando você copia um texto que tem formatação (fontes coloridas e/ou de diferentes tamanhos, texto com negrito, itálico etc.) e quer excluir essa formatação, pois basta colar esse texto dentro de uma janela do Mousepad que a formatação será perdida. No entanto, conforme eu comentei aqui, caso você já possua em seu sistema GNU/Linux algum outro "editor supersimples", como é o caso do GNOME Edit (linha de comando: gedit), não é necessário instalar o Mousepad. Do mesmo modo, há quem já utilize o programa Aptitude, por exemplo, no lugar do Synaptic, portanto nesse caso não será necessário instalar o Synaptic. Enfim: instale os programas acima (Mousepad e Synaptic) caso não tenha certeza de que possui em seu sistema alguma alternativa para aqueles programas.

Ainda no terminal do shell, verifique se existe o arquivo de configuração global /etc/bash.bashrc (se não existir, talvez ele seja o arquivo /etc/bashrc). Supondo que ele seja mesmo o /etc/bash.bashrc, execute este comando para editá-lo:
sudo mousepad /etc/bash.bashrc

Nota: se você usar a palavra gedit (ou a de algum outro editor de texto supersimples) no lugar de mousepad, o comando também funcionará. Caso você não esteja executando uma interface gráfica, recomendo que utilize o GNU Nano, que é um editor mais amigável que o vim. O comando para instalar o nano é este, bem simples:
sudo apt-get install nano

Se porventura não existir no seu sistema nem o /etc/bash.bashrc nem o /etc/bashrc, execute o comando abaixo para procurar no seu sistema todos os arquivos que contenham a palavra bashrc no nome. Um dos arquivos que forem encontrados será o arquivo de configuração global do shell bash (exceto aquele que aparecer dentro de uma pasta intitulada skel, pois skel é abreviação de skeleton, que em português significa esqueleto, ou seja: o arquivo dentro da pasta skel é apenas um "esqueleto", um modelo de arquivo de configuração, portanto não deve ser modificado):
sudo updatedb && locate bashrc

Agora vá até o final do arquivo de configuração global que você acabou de abrir no editor de textos e então adicione estas linhas:
#Variáveis necessárias para o funcionamento do SMS Power View:
JAVA_HOME=/opt/java/jre
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH


Nota: o JRE que você instalou tem que ser o da Sun/Oracle e ele tem que ser/estar instalado em /opt/java/jre/, conforme o tutorial que mencionei no item 1.1.

Salve o arquivo e então feche o Mousepad.

1.5. Descompacte o SPV e crie a pasta de instalação dele

Agora vou supor o seguinte:
i) Que o tarball que você obteve foi o arquivo install_SMS.tar.gz
ii) Que seu nome de usuário é bogus
iii) Que você salvou esse tarball dentro da sua pasta de Downloads, que fica em /home/bogus/Downloads/

Assumindo que todas as informações acima sejam verdadeiras (modifique-as de acordo com os valores corretos aí do seu sistema) e tendo em mente que o caractere ~ é um atalho para a pasta pessoal do usuário atualmente conectado (se seu nome de usuário for bogus, por exemplo, então o caractere ~ será um atalho para /home/bogus/), execute este comando para entrar na sua pasta de downloads:
cd ~/Downloads

...e, agora que você está na sua pasta de Downloads, execute este comando para descompactar o tarball do SPV:
tar -xzvf install_SMS.tar.gz

O comando acima colocará todos os arquivos de instalação do SPV dentro de ~/Downloads/sms_install/

Queremos instalar o SPV em /opt/sms/, portanto execute este comando para criar a pasta dele:
sudo mkdir /opt/sms

1.6. Instale o SPV

Estando ainda dentro de ~/Downloads/ (você pode executar o comando pwd para confirmar sua localização atual na estrutura de diretórios. Se você não estiver em ~/Downloads, execute o comando cd ~/Downloads para entrar nesse diretório e poder prosseguir com o tutorial), execute este comando para instalar o SPV:
sudo ./sms_install/install.sh

O instalador detectará automaticamente o Sun Java instalado em /opt/java/jre/. Se isso não ocorrer é porque foi necessário executar sudo no comando acima (que faz você "temporariamente se transformar" em usuário root) porém na pasta do root deve haver algum arquivo de configuração bashrc que "ainda não sabe" que seu JRE está instalado em /opt/java/jre/. Enfim: neste caso, informe manualmente (digite) o caminho /opt/java/jre e confirme pressionando a tecla ENTER.

O monitor padrão do seu sistema é o :0.0, portanto se o instalador perguntar se o valor padrão da variável DISPLAY é :0.0, basta confirmar pressionando a tecla ENTER. Alternativamente, você pode abrir outra janela do terminal e executar este comando, para saber qual é o valor da variável DISPLAY do seu sistema:
echo $DISPLAY

Quando o instalador pedir para você digitar o local de instalação, digite /opt/sms e confirme com ENTER. Se o instalador pedir para confirmar essa decisão, digite s e novamente confirme com ENTER.

Se tudo correu bem, aparecerá uma mensagem como esta:

O SMS PowerView Linux encontra-se em /opt/sms e esta pronto para executar. Para tal, basta executar o script powerview

1.7. Inicialize o SPV

Para inicializar o SPV, basta executar este comando:
sudo /opt/sms/powerview start -g

Ao executar o SPV em modo gráfico, surgirá uma janela informando o nome da sua máquina no Linux (hostname) e pedindo para você confirmar se deseja usar esse nome para essa instalação do SPV. Se quiser outro nome, basta editar o hostname que estará aparecendo. Após definir o nome que deseja, clique em OK.

IMPORTANTE: se você não executar este procedimento (i.e. não executar o SPV uma vez em modo gráfico e então definir um nome para essa instalação do SPV), quando você tentar acessar a interface web o SPV lhe pedirá uma senha misteriosa e você não conseguirá acessar a interface web.

Se a opção -g informada fizer o ícone do programa (uma letra S) aparecer na barra de tarefas, observe a cor dele. Se a cor for azul, que bom, deu tudo certo, mas se a cor for vermelha, então há algo errado com a execução do programa: neste caso, observe se apareceu alguma mensagem de erro no terminal do shell e então siga para a seção 3 (troubleshooting / resolução de problemas) deste tutorial para ver se há solução conhecida para o seu problema.

Abra uma nova aba do seu navegador e clique aqui para acessar o monitor web do seu nobreak. As figuras dos dois links abaixo ilustram a aparência do SMS Power View versão 3.00.02.00.

Figura 1 - Diagrama digital
Figura 2 - Diagrama de blocos
Yuri Sucupira ("Sampayu")

Sampayu

#2
LEGENDA:
A - o procedimento deve ser executado somente caso você tenha Automatizado a inicialização do SPV conforme explicado na seção 4 deste tutorial
N - o procedimento deve ser executado somente caso você Não tenha automatizado a inicialização do SPV
AN - o procedimento deve ser executado independentemente de você ter ou não automatizado a inicialização do SPV

Para você desinstalar corretamente o SMS Power View, os procedimentos a seguir precisam ser executados de cima para baixo e respeitando-se a legenda de cada um deles:

A 2.1. (desfaz o item 4.5) Interrompa a execução do serviço smspv

Entre no terminal do shell bash e execute o seguinte comando, para interromper manualmente o serviço smspv:
sudo service smspv stop

A 2.2. (desfaz o item 4.4) Elimine o vínculo entre o seu sistema operacional e o script de inicialização do serviço smspv

Execute este comando para que seu sistema operacional pare de executar o script smspv durante cada inicialização (boot):
sudo update-rc.d -f smspv remove

A 2.3. (desfaz o item 4.3) Exclua o script de inicialização do serviço smspv

Ainda no terminal do shell bash, execute este comando para excluir definitivamente o script de inicialização smspv:
sudo rm -f /etc/init.d/smspv

N 2.4. Pare o SMS Power View

Entre no terminal do shell bash e execute este comando para interromper o funcionamento do SMS Power View:
sudo /opt/sms/powerview stop

AN 2.5. (desfaz o item 1.5) Exclua a pasta /opt/sms/

Ainda no terminal do shell bash, execute este comando para excluir todo o conteúdo da pasta sms (inclusive a própria pasta sms) que se encontra dentro da pasta /opt:
sudo rm -rf /opt/sms

AN 2.6. (desfaz o item 1.4) Retorne o arquivo de configuração global do shell bash ao estado anterior

Assumindo que o arquivo que você editou durante a instalação foi o /etc/bash.bashrc, execute este comando para entrar no modo de edição do arquivo bash.bashrc via aplicativo Mousepad:
sudo mousepad /etc/bash.bashrc

Agora exclua estas linhas que você havia inserido:
#Comandos necessários para o funcionamento do SMS Power View:
JAVA_HOME=/opt/java/jre
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH


...e então salve o arquivo e feche o Mousepad.

Alternativamente, você pode colocar um caractere # no início das linhas (exceto a primeira, que já possui esse caractere). Isso fará com que todas essas linhas sejam ignoradas pelo shell bash. O código deverá ficar assim:
#Comandos necessários para o funcionamento do SMS Power View:
#JAVA_HOME=/opt/java/jre
#PATH=$JAVA_HOME/bin:$PATH
#export JAVA_HOME PATH


Daí basta salvar o arquivo e fechar o Mousepad. ;)

Pronto. ;)
Yuri Sucupira ("Sampayu")

Sampayu

Esta seção de troubleshooting (resolução de problemas) foi criada para apresentar dicas referentes a problemas corriqueiros cuja solução já é conhecida.

3.1. (incluído em 03/09/2014) Erro do "Stack Guard" devido à biblioteca librxtxSerial.so

Ao executar o SPV via terminal do shell bash, você pode vir a se deparar com uma mensagem parecida com esta:

Java HotSpot(TM) Client VM warning: You have loaded library /opt/sms/libs/32/librxtxSerial.so which might have disabled stack guard. The VM will try to fix the stack guard now.
It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.
Experimental:  JNI_OnLoad called.


Para entender essa mensagem de erro, é preciso entender duas coisas:

i) O arquivo librxtxSerial.so é uma biblioteca escrita em linguagem C. Ela faz parte do SPV e é carregada durante a inicialização da JVM (Java Virtual Machine / Máquina Virtual Java) para fornecer alguns recursos que permitem ao SPV comunicar-se em modo serial com o seu nobreak por intermédio da porta USB do seu computador.

ii) Stack Guard é um recurso da JVM que permite a essa JVM analisar o código-fonte de arquivos escritos em linguagem C (como é o caso da biblioteca librxtxSerial.so) e verificar se dentro desses arquivos há algum código malicioso ou mal escrito.

No caso, a mensagem de erro acima ocorreu porque o código-fonte do arquivo librxtxSerial.so que está dentro da pasta do SPV possui algum problema que foi detectado pelo Stack Guard da JVM. Para parar de ver esse alerta, você precisará instalar uma versão dessa biblioteca que seja compatível com a sua JVM. As mais recentes versões do Ubuntu (XUbuntu, KUbuntu etc.) possuem nos repositórios o pacote librxtx-java, que possui dentro dele uma versão compatível do arquivo librxtxSerial.so. Para instalar esse pacote, basta executar este comando, no terminal do shell bash:
sudo apt-get install librxtx-java

Se quiser olhar com calma esse pacote, execute o Synaptic:
sudo synaptic

...e então procure o pacote librxtx-java. Caso ele ainda não esteja instalado, instale-o e em seguida clique sobre ele com o botão direito do mouse, selecione a opção Propriedades e clique na aba Arquivos instalados: você verá uma lista contendo inclusive a linha /usr/lib/jni/librxtxSerial.so, que é justamente a localização do arquivo-biblioteca compatível de que você necessita.

Vamos fazer backup da biblioteca original do SPV e em seguida criar uma ligação para a biblioteca que é compatível. Primeiro o comando para criar backup da biblioteca original (o backup da biblioteca será o arquivo librxtxSerial.so.bak):
Se o seu sistema for de 32 bits:
sudo mv /opt/sms/libs/32/librxtxSerial.so /opt/sms/libs/32/librxtxSerial.so.bak
Se o seu sistema for de 64 bits:
sudo mv /opt/sms/libs/64/librxtxSerial.so /opt/sms/libs/64/librxtxSerial.so.bak

Agora basta criar uma ligação que aponte para a biblioteca que funciona:
Se o seu sistema for de 32 bits:
sudo ln -sf /usr/lib/jni/librxtxSerial.so /opt/sms/libs/32/librxtxSerial.so
Se o seu sistema for de 64 bits:
sudo ln -sf /usr/lib/jni/librxtxSerial.so /opt/sms/libs/64/librxtxSerial.so

Reinicie seu computador, retorne ao terminal do shell bash e execute este comando:
sudo /opt/sms/powerview start -g

Se aquela mensagem de erro não aparecer mais, significa que a nova biblioteca librxtxSerial.so funcionou sem dar problemas com a sua JVM. ;)

Nota: caso não esteja executando uma interface gráfica, omita a opção -g, no comando acima. Se quiser reiniciar o powerview (em interface gráfica) sem reiniciar o sistema, execute este comando (omita o -g caso você não esteja em uma interface gráfica):
sudo /opt/sms/powerview restart -g

3.2. (incluído em 13/09/2014) SPV perde a conexão com o serviço remoto Alerta 24h
Você se cadastrou no website Alerta24h, acessou o website local do seu cliente SPV, foi em CONFIGURAÇÕES, daí acessou ALERTA 24H, inseriu o mesmo usuário e senha usados no seu cadastro no Alerta 24h, selecionou o nobreak, clicou no botão Salvar, o painel direito (Status) passou a indicar que seu cliente SPV está conectado ao serviço remoto Alerta 24h (o ícone em formato de V / checkmark / sinal de visto "acendeu"), mas, após reiniciar seu computador e retornar ao website local do seu cliente SPV, você percebeu que a conexão com o serviço remoto Alerta 24h foi perdida (o ícone "apagou", virou um círculo cinza). Você reconectou, mas após iniciar novamente o seu computador o Alerta 24h novamente perdeu a conexão. E agora? Como manter a conexão persistente?

A solução é simples: edite o arquivo /opt/sms/xml/configuracoes.properties e mude o texto LOG_COMUNICACAO=0 para LOG_COMUNICACAO=1. Isso fará o cliente SPV enviar frequentemente um pedido de "keep alive" ("mantenha-se vivo / acordado") para o servidor remoto do serviço Alerta 24h e isso manterá a conexão ativa.

Comando para editar o arquivo usando o Mousepad:
sudo mousepad /opt/sms/xml/configuracoes.properties

Após mudar de 0 para 1 o valor do parâmetro LOG_COMUNICACAO, salve o arquivo, feche o Mousepad e reinicie o seu computador.

Após executado esse procedimento, ainda é possível que seu computador venha a ser desconectado pelo serviço Alerta 24h: isso é raro, mas pode ocorrer caso o servidor remoto seja desconectado temporariamente (desligado e religado, ou então reiniciado, por exemplo). Quanto a isso não há muito o que se possa fazer: a empresa SMS é que precisa configurar seu servidor para não dar timeout nas conexões quando for reiniciado ou desligado e religado (timeout = tempo limite. Quando o tempo limite é atingido - seja por que motivo for - a conexão é perdida). O que você pode fazer é colocar este URL como página inicial do seu navegador, daí sempre que você abrir seu navegador veja se o serviço foi desconectado: se houver sido, basta deixar marcada a caixa Alerta 24h Habilitado e clicar no botão salvar. Pelo menos o log automático preservou suas credenciais e por isto você não precisou digitar novamente o usuário e a senha. Mas, repito: é raro acontecer de o servidor remoto sair do ar temporariamente.

3.3. (incluído em 08/11/2022) SPV não abre em modo gráfico, ou abre porém pede uma senha

A variável de ambiente DISPLAY basicamente informa o endereço de hardware do seu monitor de vídeo. O valor padrão dessa variável é :0.0, mas em alguns computadores é possível que o Ubuntu atribua um valor diferente de :0.0 para essa variável e o SPV mesmo assim tente mostrar as janelas dele no endereço de hardware :0.0, daí ocorre esse erro de exibição gráfica.

Para ver qual é o valor atual da variável DISPLAY no seu Ubuntu, execute este comando, no shell:

echo $DISPLAY

Conforme explicado neste post, caso o valor da variável DISPLAY do seu Ubuntu seja diferente de :0.0, é necessário "informar" isso ao SPV. E, para "informar" isso ao SPV, é necessário abrir o arquivo /opt/sms/powerview em um editor de textos simples e então mudar o valor atribuído a DISPLAY nesse arquivo, para que a informação desse arquivo fique igual ao que o seu Ubuntu utiliza.

Uma vez resolvida a pane da interface gráfica, é necessário [1] executar o SPV em modo gráfico, em seguida [2] digitar um nome qualquer para a sua instalação do SPV e então [3] confirmar clicando em OK. Se você fizer isso, o SPV nunca irá lhe pedir senha nenhuma: o SPV só pede senha quando a instalação do SPV não possui um nome. Veja neste post o que eu comentei a esse respeito.

3.4. (incluído em 08/11/2022) Resolvi a pane gráfica e da senha, mas mesmo assim o SPV não é exibido no navegador

É possível que a porta de rede 8080 usada pelo SPV no URL http://localhost:8080/sms/ já esteja sendo usada por outra aplicação web. Se você instalou o SPV em /opt/sms, então siga a dica do usuário zan2: edite o arquivo /opt/sms/webserver/libs/webserver.properties (com um comando como sudo gedit /opt/sms/webserver/libs/webserver.properties ou sudo nano /opt/sms/webserver/libs/webserver.properties) e então mude o valor httpPort=8080 para algo como por exemplo httpPort=9090.
Yuri Sucupira ("Sampayu")

Sampayu

#4
Para que o SPV seja executado, é necessário executar o comando sudo /opt/sms/powerview start, com ou sem o acréscimo da opção -g, por exemplo. No entanto, essa pode ser uma tarefa ingrata para quem prefere que o SPV seja sempre executado, automaticamente, durante a inicialização do sistema.

Neste caso, para que o SPV seja iniciado automaticamente será necessário criar um script "init", que é um script de inicialização automática. Eis o passo-a-passo:

4.1. Execute o Mousepad em modo superusuário

Antes de qualquer outra coisa: caso o SMS Power View esteja em execução, encerre-o com este comando:
sudo /opt/sms/powerview stop

Agora que o SMS Power View foi interrompido, entre no terminal do shell bash e execute este comando para inicializar o editor de textos Mousepad em modo superusuário:
sudo mousepad /etc/init.d/smspv

4.2. Gere o código do script

Copie o código abaixo e cole-o dentro da janela do Mousepad:
#!/bin/bash

### BEGIN INIT INFO
# Provides:          smspv
# Required-Start:
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: SMS Power View
# Description:       Script que executa o script 'powerview' como sendo um serviço denominado 'smspv'
### END INIT INFO

SMS_HOME="/opt/sms"

# Retorna erro caso não encontre o script 'powerview'
if [ ! -f $SMS_HOME/powerview -o ! -d $SMS_HOME ]; then
echo "O script 'powerview' não foi encontrado!"
exit 1
fi

case "$1" in
start)
   # Inicializa o serviço 'smspv' (o script 'powerview') quando o sistema operacional está em um dos runlevels definidos em Default-Start
   echo -n "Inicializando o serviço SMS Power View..."
   date >> $SMS_HOME/logs/sistema/inicializacoes.log
   $SMS_HOME/powerview start --no-gui >> $SMS_HOME/logs/sistema/inicializacoes.log
   echo "OK"
;;

stop)
   # Interrompe o serviço 'smspv' (o script 'powerview') quando o sistema operacional está em um dos runlevels definidos em Default-Stop
   echo -n "Parando o serviço SMS Power View..."
   $SMS_HOME/powerview stop
   echo "OK"
;;

reload|restart)
   $0 stop
   $0 start
;;

*)
   echo "Uso: smspv start|stop|restart|reload"
   exit 1
esac

exit 0


Nota: de maneira geral, os sistemas GNU/Linux inicializam no runlevel 2, que é um nível de execução multiusuário. Algumas distribuições podem executar o sistema em um runlevel maior (3, 4 ou 5, que são todos modos multiusuário, ou seja, que permitem que vários usuários se conectem / efetuem login ao mesmo tempo). Se quiser saber em qual nível de execução você (sua conta) atualmente se encontra dentro do seu sistema GNU/Linux, execute este comando:
who -r

No caso, o código do script acima faz várias coisas, mas a mais importante delas é esta: sempre que seu sistema estiver no runlevel 2, 3, 4 ou 5 (ou seja: em modo multiusuário), o script executará um comando que inicializará o SPV. Além disso, essa inicialização será executada com a opção --no-gui, que faz com que o SPV seja executado como um serviço (ele "roda" no plano de fundo, sem interface gráfica). Ainda, o script faz com que um log das inicializações do SPV seja registrado em /opt/sms/logs/sistema/inicializacoes.log, portanto você poderá a qualquer tempo abrir ou visualizar o conteúdo daquele arquivo inicializacoes.log, para saber quais foram as mensagens que o SPV gerou em cada uma das vezes em que o script inicializou o SPV. ;)

4.3. Salve o script e torne-o executável

Ainda na janela do Mousepad, vá em Arquivo e clique sobre a opção Salvar para salvar esse arquivo em /etc/init.d/smspv

Salvou o arquivo? Ok, então agora feche o (saia do) Mousepad.

De volta ao terminal do shell bash, execute este comando para tornar o arquivo legível e executável:
sudo chmod 755 /etc/init.d/smspv

4.4. Informe ao seu sistema operacional que o script smspv existe

Execute este comando no terminal do shell bash, para que seu sistema passe a executar o script smspv durante toda inicialização (boot):
sudo update-rc.d smspv defaults

4.5. Inicialize o serviço

Execute este comando para já inicializar manualmente o smspv:
sudo service smspv start

4.6. Reinicialize o sistema e teste o funcionamento do script

Reinicie o sistema, efetue login novamente, abra seu navegador web preferido e clique aqui. Se a página do SPV for carregada, o script de inicialização está funcionando (de maneira automatizada). ;)
Yuri Sucupira ("Sampayu")

jkmsjq

Não se pode usar o Gedit no Ubuntu no lugar do mousepad, afinal, aquele é o padrão do Ubuntu?
LinuxUser: 548942 / Dando um tópico como resolvido
"A verdade só é agressiva a quem vive de mentiras". Autor desconhecido.
Twitter: @jeisonkertesz

Sampayu

Citação de: jkmsjq online 03 de Setembro de 2014, 13:58
Não se pode usar o Gedit no Ubuntu no lugar do mousepad, afinal, aquele é o padrão do Ubuntu?

Você pode usar o gedit no lugar do mousepad, sim. Sem problema. :)

No tutorial eu indico a instalação do mousepad porque estou no XUbuntu, que não vem com o gedit instalado, e particularmente eu gosto mais do mousepad. Também porque (pelo que eu saiba) o gedit só vem pré-instalado no Ubuntu: no KUbuntu, no XUbuntu etc. ele não é pré-instalado.

Mas na prática tanto faz o editor de textos que você utiliza: contanto que na linha de comandos você coloque o nome do executável de um editor de textos e salve os resultados em modo de "texto puro", não fará diferença usar o gedit, mousepad, leafpad ou qualquer outro. ;)
Yuri Sucupira ("Sampayu")

andreofgyn

Opa, Sampayu, tudo bom!?

Cara, seguinte, tô tentando instalar o powerview no meu NAS (Readynas Ultra x86), ele roda uma versão capada do Debian etch.

Então, consegui instalar, acessar a interface web e tudo mais, porém, não tô conseguindo com que ele leia as informações da porta usb, então as informações ficam zeradas na interface web, e não é o componente do java, pois esse eu instalei e ta tudo ok, é o ttyS0 que só ta retornando nulo (vejo isso rodando o powerview no modo debug).

Creio que o que esteja faltando é um módulo do Debian (como ele é capado, não vem com todos padrões instalados), deve ser o que converte serial para usb, tentei instalar o módulo usbserial, consegui, mas não adiantou, creio que ainda esteja faltando algum módulo.

Quando rodo o dmesg, o ups é detectado como: "usb 3-1: new low speed USB device using uhci_hcd and address 4". Creio que seja esse o problema, pois acho que deveria detectar como um adaptador serial para usb e mostrar os detalhes.

Assim, será que você poderia rodar o dmesg e verificar se da para conferir que módulo/driver ele está usando no seu?

Grato.

Sampayu

Citação de: andreofgyn online 05 de Setembro de 2014, 17:53
Opa, Sampayu, tudo bom!?

Cara, seguinte, tô tentando instalar o powerview no meu NAS (Readynas Ultra x86), ele roda uma versão capada do Debian etch.

Então, consegui instalar, acessar a interface web e tudo mais, porém, não tô conseguindo com que ele leia as informações da porta usb, então as informações ficam zeradas na interface web, e não é o componente do java, pois esse eu instalei e ta tudo ok, é o ttyS0 que só ta retornando nulo (vejo isso rodando o powerview no modo debug).

Creio que o que esteja faltando é um módulo do Debian (como ele é capado, não vem com todos padrões instalados), deve ser o que converte serial para usb, tentei instalar o módulo usbserial, consegui, mas não adiantou, creio que ainda esteja faltando algum módulo.

Quando rodo o dmesg, o ups é detectado como: "usb 3-1: new low speed USB device using uhci_hcd and address 4". Creio que seja esse o problema, pois acho que deveria detectar como um adaptador serial para usb e mostrar os detalhes.

Assim, será que você poderia rodar o dmesg e verificar se da para conferir que módulo/driver ele está usando no seu?

Grato.


Oi André (imagino que esse seja o seu nome). Puxei algumas informações do meu sistema e vou transcrevê-las aqui. Dá uma olhada e vê se algo lhe ajuda (eu rodei uns comandos e excluí tudo o que acredito que não terá utilidade para você, na expectativa de que com isso fique mais fácil rastrear o problema):

1) Resultado do comando dmesg:

usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
(...)
usb 3-2: New USB device found, idVendor=04b4, idProduct=5500
usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 3-2: Product: USB to Serial
usb 3-2: Manufacturer: Cypress Semiconductor
(...)
usbcore: registered new interface driver usblp
usbcore: registered new interface driver usbserial
usbcore: registered new interface driver usbserial_generic
usbserial: USB Serial support registered for generic
usbcore: registered new interface driver cypress_m8
usbserial: USB Serial support registered for DeLorme Earthmate USB
usbserial: USB Serial support registered for HID->COM RS232 Adapter
usbserial: USB Serial support registered for Nokia CA-42 V2 Adapter
cypress_m8 3-2:1.0: HID->COM RS232 Adapter converter detected
(...)
usb 3-2: HID->COM RS232 Adapter converter now attached to ttyUSB0


2) Resultado do comando usb-devices:

T:  Bus=03 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=  2 Spd=1.5 MxCh= 0
D:  Ver= 1.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=04b4 ProdID=5500 Rev=00.00
S:  Manufacturer=Cypress Semiconductor
S:  Product=USB to Serial
C:  #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=100mA
I:  If#= 0 Alt= 0 #EPs= 2 Cls=03(HID  ) Sub=00 Prot=00 Driver=cypress_m8


A string ttyUSB0 me chamou a atenção, por isto rodei um grep ttyUSB /opt/sms/powerview (já que o arquivo powerview não é um binário executável mas sim um shell script) e daí acabei encontrando a string ttyUSB dentro do script. Olha que interessante este trecho do código-fonte dele:

i=0;
j=8;
while [ $i != "3" ]
do

if [ -e /dev/ttyUSB$i ]; then
       echo Criando link simbolico para USB-Serial.
       ln -sf /dev/ttyUSB$i /dev/ttyS$j
      stty -F /dev/ttyUSB$i -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl;max=0;min=0;time=0;line=0
       j=$[j+1];
fi

    i=$[i+1];

done


O comando acima configura o terminal ttyUSB0. Ou seja: além de ter instalados no seu sistema os drivers de interface necessários para fazer o "USB to Serial" funcionar, você também precisa ter no mínimo um arquivo de link simbólico: o /dev/ttyS8 apontando para /dev/ttyUSB0. Eu acredito que esse link tenha sido criado direitinho, mas por via das dúvidas dá uma verificada nisso, porque talvez o arquivo /dev/ttyUSB0 não exista.

Caso o arquivo de dispositivo USB dialout "ttyUSB0" não exista, esse pode ser o problema. Você pode manualmente criar esse arquivo por intermédio do script MAKEDEV:

cd /dev && sudo MAKEDEV ttyUSB0

...e, se o comando acima não criar o arquivo, você pode tentar este comando:

sudo mknod -m 660 /dev/ttyUSB0 c 188 0

Os números 188 e 0 (major e minor, respectivamente) são os que meu sistema está de fato utilizando para o arquivo /dev/ttyUSB0. Esses números podem mudar de acordo com a tabela de device drivers do kernel. Porém, como você está usando um Debian e o Ubuntu é baseado no Debian, é possível (embora não seja certeza...) que ambos os kernels possuam tabelas iguais. Se eles possuírem (e o device driver correto estiver carregado no kernel), esses números 188 e 0 vão fazer o /dev/ttyUSB0 funcionar direitinho com o kernel do seu sistema.

Se após isso o SPV continuar não funcionando, muito provavelmente o problema será a falta do device driver de interface USB para Serial mesmo.

Espero que estas informações ajudem. :)
Yuri Sucupira ("Sampayu")

andreofgyn

Valeu, Sampayu, muito obrigado pela disposição em ajudar.

Pois é, valeu pelas dicas, tô tentando de tudo aqui, o maior avanço que consegui foi resetar o NAS e após ele reiniciar executei o modprobe utilizando o vendor/product, como:

modprobe usbserial vendor=0x04b4 product=0x5500

Daí quando conecto o usb aparece a seguinte mensagem:

usb 3-1: new low speed USB device using uhci_hcd and address 3
usbserial_generic 3-1:1.0: Generic device with no bulk out, not allowed.
usbserial_generic: probe of 3-1:1.0 failed with error -5

Quer dizer, entendo que ele não ta detectando o ups como um usb<>serial válido, mas creio que não seja defeito, pois no Windows está funcionando sem problemas, vá entender, é continuar na luta.

Abraço.

andreofgyn

Opa, deu certo!

Olhei direitinho o seu dmesg, Sampayu, e vi que o ups usa o driver da Cypress.

Então cacei um driver usb desse fabricante no menuconfig e achei o cypress_m8, daí dei um simples modprobe no mesmo e passou a funcionar, criou automaticamente o ttyUSB0 e tudo mais, precisei nem reconectar o usb.

Então, se acontecer de alguém ter um NAS na mesma situação, não é nem necessário instalar o módulo usbserial para que o ups se comunique, apenas instale o cypress_m8.

Obrigado, abraço.

Sampayu

Citação de: andreofgyn online 06 de Setembro de 2014, 14:13
Opa, deu certo!

Olhei direitinho o seu dmesg, Sampayu, e vi que o ups usa o driver da Cypress.

Então cacei um driver usb desse fabricante no menuconfig e achei o cypress_m8, daí dei um simples modprobe no mesmo e passou a funcionar, criou automaticamente o ttyUSB0 e tudo mais, precisei nem reconectar o usb.

Então, se acontecer de alguém ter um NAS na mesma situação, não é nem necessário instalar o módulo usbserial para que o ups se comunique, apenas instale o cypress_m8.

Obrigado, abraço.

Oi andreofgyn, é isso mesmo, eu destaquei o cypress_m8 em negrito junto com o usbserial já pra chamar a atenção mesmo. Que bom que funcionou aí. :)

Um detalhe importante é que é necessário ter os dois drivers instalados: tanto o usbserial quanto o cypress_m8. Isso porque o cypress_m8 usa o usbserial (ele depende do usbserial). Essa informação pode ser obtida com o comando modinfo cypress_m8:

filename:       /lib/modules/3.13.0-35-generic/kernel/drivers/usb/serial/cypress_m8.ko
license:        GPL
description:    Cypress USB to Serial Driver
author:         Lonnie Mendez <dignome@gmail.com>, Neil Whelchel <koyama@firstlight.net>
srcversion:     4B75EFC70038DDF9233DC24
alias:          usb:v07D0p4101d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v6737p0001d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v0D9Fp0002d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v04B4p5500d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1163p0200d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v1163p0100d*dc*dsc*dp*ic*isc*ip*in*
depends:        usbserial
intree:         Y
vermagic:       3.13.0-35-generic SMP mod_unload modversions 686
signer:         Magrathea: Glacier signing key
sig_key:        A2:8D:B5:FD:6E:29:9C:CE:49:47:DA:CA:A6:6F:45:9D:B4:AC:CE:24
sig_hashalgo:   sha512
parm:           stats:Enable statistics or not (bool)
parm:           interval:Overrides interrupt interval (int)
parm:           unstable_bauds:Allow unstable baud rates (bool)
Yuri Sucupira ("Sampayu")

antonio.spadim

#12
Olá pessoal,

  Tentei no Ubuntu 14.04 e no Debian 7.6 (ambos 64bits), e nos 2 está como o mesmo comportamento. Tenho ligado ao servidor um Nobreak SMS Power Sinus II (RS232) por meio de um conversos USB/SERIAL Prolific que está funcionando 100% (testei em outra aplicação nesse servidor e está recebendo e enviando sem problema).

  Instalei o Java por este link depois procedi como o amigo Yuri disse.

  Me ocorrem duas situações diferentes ao executar o ./powerview start.

1ª Situação
Caso tenha reiniciado o servidor e executo o ./powerview start , e posteriormente entro no console (./powerview -c) não há nada a ser informado e a situação do nobreak está como DESCONECTADO. Idem no webserver na porta 8080.

2ª Situação
Por não ter funcionado antes, então eu dou um ./powerview stop e me certifico q não há nada rodando nos processos. Quando reinicio ./powerview start aparecem vários erros de lock na biblioteca RXTX
RXTX fhs_lock() Error: creating lock file: /var/lock/LCK..ttyUSB0: File exists
RXTX fhs_lock() Error: creating lock file: /var/lock/LCK..ttyS1: File exists
RXTX fhs_lock() Error: creating lock file: /var/lock/LCK..ttyS0: File exists
RXTX fhs_lock() Error: creating lock file: /var/lock/LCK..ttyS8: File exists


Caso eu fique monitorando o diretório com ls -lah /var/lock/ fica mudando o conteúdo LCK..ttyS1 -> LCK..ttyS7 ->LCK..ttyS8 -> LCK..ttyUSB0 -> ...

Tentei instalar a RXTX diretamente pelo repositório do Debian/Ubuntu e copiar para o caminho do 64bits como nosso colega mencionou no post porém o problema permanece.

Alguma idéia do que pode ser?

Atenciosamente,
Toni

Sampayu

Citação de: antonio.spadim online 20 de Outubro de 2014, 16:49
Olá pessoal,

  Tentei no Ubuntu 14.04 e no Debian 7.6 (ambos 64bits), e nos 2 está como o mesmo comportamento. Tenho ligado ao servidor um Nobreak SMS Power Sinus II (RS232) por meio de um conversos USB/SERIAL Prolific que está funcionando 100% (testei em outra aplicação nesse servidor e está recebendo e enviando sem problema).

  Instalei o Java por este link depois procedi como o amigo Yuri disse.

  Me ocorrem duas situações diferentes ao executar o ./powerview start.

1ª Situação
Caso tenha reiniciado o servidor e executo o ./powerview start , e posteriormente entro no console (./powerview -c) não há nada a ser informado e a situação do nobreak está como DESCONECTADO. Idem no webserver na porta 8080.

2ª Situação
Por não ter funcionado antes, então eu dou um ./powerview stop e me certifico q não há nada rodando nos processos. Quando reinicio ./powerview start aparecem vários erros de lock na biblioteca RXTX
RXTX fhs_lock() Error: creating lock file: /var/lock/LCK..ttyUSB0: File exists
RXTX fhs_lock() Error: creating lock file: /var/lock/LCK..ttyS1: File exists
RXTX fhs_lock() Error: creating lock file: /var/lock/LCK..ttyS0: File exists
RXTX fhs_lock() Error: creating lock file: /var/lock/LCK..ttyS8: File exists


Caso eu fique monitorando o diretório com ls -lah /var/lock/ fica mudando o conteúdo LCK..ttyS1 -> LCK..ttyS7 ->LCK..ttyS8 -> LCK..ttyUSB0 -> ...

Tentei instalar a RXTX diretamente pelo repositório do Debian/Ubuntu e copiar para o caminho do 64bits como nosso colega mencionou no post porém o problema permanece.

Alguma idéia do que pode ser?

Atenciosamente,
Toni

Isso está me cheirando a erro de permissão. Experimenta executar o comando sudo su e somente depois disso executar o comando ./powerview start
Yuri Sucupira ("Sampayu")

antonio.spadim

Olá yuri, valeu por responder!

   Estou executando como root, de modo que não seria problema de permissão, correto?
   Para tirar teima executei os comandos abaixo:
root@avsrv1:~# chmod -R 777 /opt/sms/
root@avsrv1:~# cd /opt/sms/app
root@avsrv1:/opt/sms/app# ls
banco  images  info  libs  logs  powerview  resource  webserver  xml
root@avsrv1:/opt/sms/app# ./powerview start
Iniciando como Serviço...
Criando link simbolico para USB-Serial.
SMS Power View iniciado com sucesso.
root@avsrv1:/opt/sms/app# ./powerview -c
Erro: É necessário inicializar o sistema antes de utilizá-lo no modo console.


e o mesmo lance qndo dou o ls e fico apertando TAB para ver o que há no /var/lock
root@avsrv1:/opt/sms/app# ls -lah /var/lo
local/ lock/  log/   
root@avsrv1:/opt/sms/app# ls -lah /var/lock/
LCK..ttyS8
root@avsrv1:/opt/sms/app# ls -lah /var/lock/
LCK..ttyUSB0
root@avsrv1:/opt/sms/app# ls -lah /var/lock/
LCK..ttyS1
root@avsrv1:/opt/sms/app# ls -lah /var/lock/
LCK..ttyS0