:::: MENU ::::

terça-feira, 15 de dezembro de 2015

Seria vergonhoso da minha parte não citar o grande mestre Aurélio, de onde eu sempre tiro alguma coisa pra me ajudar. Devo muito ao site desse cara.
Se você quer aprender MESMO shellscript, recomendo seguir as dicas dele.
Sem mais.



Aqui tem o canivete dele, super útil! Deixe uma cópia no seu smartphone, vai ajudar ;)
http://aurelio.net/shell/canivete
--
Vou tentar sempre referenciar alguns bons materiais aqui. Fiquem ligados.
Abs!

quarta-feira, 9 de dezembro de 2015

Chatinho... O Virtualbox tá problemático! Mas enfim... Ele também estava apresentando o erro após ser chamado para execução:

finarfin:~> virtualbox
WARNING: The vboxdrv kernel module is not loaded. Either there is no module
         available for the current kernel (4.1.13-5-default) or it failed to
         load. Please recompile the kernel module and install it by

           sudo /sbin/vboxconfig

         You will not be able to start VMs until this problem is fixed.


Tá de sacanagem né Virtualbox? Toda hora uma coisinha diferente!!!
Mas esse é mais fácil. Primeiro, certifique-se que o pacote DKMS está instalado, e depois, execute esse comandinho:

rcvboxdrv setup


E pronto, funcionou pra mim. A iluminação veio do fórum do Virtualbox, aqui: https://forums.virtualbox.org/viewtopic.php?f=7&t=74119
Tive esse problema após instalar o Virtualbox, pacote oficial da Oracle. Estranhamente, ele sempre apresentava a mensagem "Callee RC: NS_ERROR_FACTORY_NOT_REGISTERED" após a tentativa de execução, porém, quando tentava como root, funcionava normalmente. A partir daqui, já sabemos que é alguma coisa relacionada a permissão.

Pois bem, googlar eu fui.

Vi que é um bug veeeelho, com registros de 2009:

Callee RC: NS_ERROR_FACTORY_NOT_REGISTERED 0x80040154 unrelated to /tmp permissions => Fixed in SVN

 https://www.virtualbox.org/ticket/3568

Modo 01: Um cidadão resolveu da seguinte maneira[1]:


chmod ug-s /tmp
rm -fr /tmp/.vbox-rene-ipc/


Modo 02: Já eu, fui um pouco mais "violento":


finarfin:/tmp # ls | grep vbox
.vbox-raul-ipc
.vbox-root-ipc
finarfin:/tmp # rm -rf .vbox-r*


Mandei pra puta-que-pariu os arquivos do diretório /tmp/.vbox-$USER-ipc, no caso, .vbox-raul-ipc.



[1]: http://www.jbnet.fr/systeme/virtualisation/virtualbox-ns_error_factory_not_registered-0x80040154.html

sexta-feira, 4 de dezembro de 2015

Isso é útil em scripts, quando você quer que a saída padrão (STDOUT) seja emitida na tela e também seja anexada em um arquivo. Você pode fazer isso de duas maneiras:

1. Emitindo a saída duas vezes, sendo que a primeira vai direto para o STDOUT e depois você emite a mesma saída, mas dessa vez jogando para um arquivo ( > ou >> file.txt). Esse funciona melhor quando é usado o comando echo.
2. Usando o comando tee. Maneira mais simples.

Comando tee
O tee lê da entrada padrão (STDIN) e escreve na saída padrão (STDOUT) e arquivos, como a própria manpage descreve.


DESCRIÇÃO
        Copia a entrada padrão para cada arquivo, e também para a saída padrão.

       -a, --append
               anexa aos arquivos, não sobrescrevendo

       -i, --ignore-interrupts
              ignora sinais de interrupção

       --help mostra essa saída e sai

       --version
              mostra a versão e sai

       Se FILE é -, copie novamente para a saída padrão (standard output).

AUTORES
       Escrito por Mike Parker, Richard M. Stallman, e David MacKenzie.


Exemplo:

[root@digestor var]# du -sh * | tee -a file.txt
561M    cache
8.0K    db
8.0K    empty
4.0K    file.txt
4.0K    games

[root@digestor var]# cat file.txt
8.1G    .
561M    cache
8.0K    db
8.0K    empty
4.0K    file.txt
4.0K    games

[root@digestor var]#


Mas aí alguém pode dizer: Ô! Isso eu faço usando o > ou >>. É, faz, mas não vai conseguir jogar na tela e no arquivo ao mesmo tempo.

Use o tee para criar seus arquivos de log, fica muito prático.

Abs!

quinta-feira, 3 de dezembro de 2015

Fala queridos!

Fiz esse script para preparar os hosts que receberão o agente do HP Data Protector de lá da empresa.
Percebam que ele:
Permite que o host servidor (de onde você vai executar os comandos) consiga logar no host cliente sem autenticação
Edita arquivos
Envia arquivos
Instala pacotes
Configura serviços

Tenham esse script como referência. Mudem como preferir. Usem a criatividade! :)


#!/bin/bash
# Instala software cliente de backup
# Raul Libório, raul.liborio@solutis.com.br
# 1.0

AUTH_KEYS_DIR="/root/.ssh"
AUTH_KEYS="$AUTH_KEYS_DIR/authorized_keys"
AUTH_ID="$AUTH_KEYS_DIR/id_rsa.pub"
DNSCLIENTE=$1
PASSWD="asdfghjklç"
SSH="sshpass -p "$PASSWD" ssh -o "StrictHostKeyChecking=no" root@$DNSCLIENTE"
SCP="sshpass -p "$PASSWD" scp -o "StrictHostKeyChecking=no""
DEPENDENCIAS="yum -y install xinetd rpm libstdc++ rsh-server glibc rsync"
RESPOSTA_OK="$( date ) - Iniciando instalacao no cliente $DNSCLIENTE"
RESPOSTA_NO="$( date ) - Instalacao cancelada pelo usuario $USER no host $DNSCLIENTE"
RESPOSTA_HOST_ERR="Use o FQDN do host. Exemplo: $(nslookup $DNSCLIENTE | awk /name/'{print $NF}')"
LOG="/var/log/hp_dataprotector_shell-installer.log"

# Testa se $1 recebeu um nome de host valido - o HP Data Protector so aceita FQDN
echo $1 | grep -q '.solutis.net.br'
[ $? != "0" ] && echo "$RESPOSTA_HOST_ERR" && exit 2

# Confirmacao se quer continuar a execucao do script
read -p "Deseja preparar o host $1 para instalar o HP Data Protector? " RESPOSTA
[ $RESPOSTA != "y" ] && echo $RESPOSTA_NO &>> $LOG && exit 1 || echo "$RESPOSTA_OK" &>> $LOG

# Desabilitar SELinux
$SSH sed -i 's/enforcing/disabled/' /etc/selinux/config

# Cria o diretorio $AUTH_KEYS_DIR caso ele nao exista
$SSH "mkdir $AUTH_KEYS_DIR 2> /dev/null"

# Copia o $AUTH_ID para o $DNSCLIENTE
$SCP $AUTH_ID root@$DNSCLIENTE:/tmp

# Adiciona $AUTH_ID ao $AUTH_KEYS
$SSH "touch $AUTH_KEYS"
$SSH "cat /tmp/id_rsa.pub >> $AUTH_KEYS"

# Instala as depenencias do HP Data Protector
$SSH $DEPENDENCIAS

# Habilite os servicos necessarios
$SSH "chkconfig rexec on"
$SSH "chkconfig rsync on"
$SSH "chkconfig rsh on"
$SSH "service xinetd restart"

# Confirmacao da execucao
echo "$( date ) - Host $DNSCLIENTE preparado com sucesso." &>> $LOG
exit 0

Posts populares