Shell Script – TSM – Instalação do cliente versão 6.x – DEBIAN/UBUNTU

Neste post estou disponibilizando um script de minha autoria para automatizar as tarefas de instalação do Cliente
TSM - Tivoli Storage Manager ( backup ) em servidores ou estações linux ( 64 e 32 bits ) – AMD64 – I386 – X86_64. Os testes foram realizados em servidores : Ubuntu Server 11.04 – Natty - 32 e 64 bits, contudo pode ser instalado em servidores CentOS , RHEL, SuSe, Debian e outras distros, bastando alterar ou comentar linhas. Estou bem contente porque este é meu primeiro script disponibilizado e também porque fazia tempo que não praticava programação ( estou desenferrujando ).
O script TSM é bem simples e basicamente trabalha da seguinte forma :
- Vai ao FTP da IBM e faz o download do cliente e pacote de idioma de acordo com a opção do usuário.
- Checa se o sistema é 32 ou 64 bits e configura o sistema de acordo com isso.
- Descompacta, cria os pacotes .deb, instala os arquivos de configuração, inicialização e portas para acesso web ( webclient ).
- Registra o Nó cliente junto ao servidor de backup ( TSM SERVER ) se este for Linux. No caso de servidor TSM SERVER Windows, o registro do cliente deve ser feito manualmente.
- Limpa a instalação e sai de acordo com opção do usuário.
Espero que a comunidade possa melhorar o script e disponibilizar novas funcionalidades além de dar feedback e sugerir melhorias.
Script TSM
Atenção : Em sistemas com filesystem EXT4 adicione a seguinte linha no arquivo dsm.sys - “ virtualmountpoint / “ Ref. ao erro ANS1149E
echo "------------------------------------------------------------------------------------" |
echo "# TSM CLIENT INSTALL - Para versão 6.0/6.1/6.2 #" |
echo "# Versão do script - 1.0 - 27/jun/2011 #" |
echo "------------------------------------------------------------------------------------" |
if [ "$(id -u)" != "0" ]; then |
echo "ERRO: Este Programa só pode ser executado como root ou administrador" |
echo "Você esta logado como root" |
read -p "Antes da Instalação - Deseja atualizar a lista de pacotes? [N/s]" resp |
resp=$(echo "$resp" | tr [[:upper:]] [[:lower:]] | cut -c1) |
if [ "$resp" = "s" ]; then |
echo "Atualizando os repositórios" |
apt-get update >> install.log |
echo "Bem vindo a instalação - IBM Tivoli TSM Client - Versão Debian/Ubuntu !" |
echo "Pressione ENTER para continuar ou CTRL-C para sair exit... \c" |
read -p "Seu ambiente possui proxy [s/N]" resposta |
resposta=$(echo $resposta | tr [[:upper:]] [[:lower:]] | cut -c1) |
if [ "$resposta" = "n" ]; then |
echo "Indo para a Instalação" |
if cat /etc/profile | grep "\(http_proxy\|ftp_proxy\)" > /dev/null; then |
echo " O proxy ja esta configurado em /etc/profile" |
cat /etc/profile | grep "\(http_proxy\|ftp_proxy\)" |
read -p " O proxy necessita usuario e senha? [s/N] " proxysenha |
proxysenha=$(echo $proxysenha | tr [[:upper:]] [[:lower:]] | cut -c1) |
if [ "$proxysenha" = "s" ]; then |
read -p "Digite o nome do usuario para o proxy: " usuario |
read -p "Digite a senha para o proxy: " senha |
read -p "Digite o ip do servidor proxy: " ip_servidor |
read -p "Digite a porta do proxy: " porta |
if [ "$proxysenha" = "s" ]; then |
PROXY="${usuario}:${senha}@${ip_servidor}:${porta}" |
PROXY="${ip_servidor}:${porta}" |
cat <<-EOF >> /etc/profile |
export http_proxy ftp_proxy |
export http_proxy ftp_proxy |
cat <<-EOF >> /etc/apt/apt.conf |
cat <<-EOF >> /etc/environment |
if [ "$proxysenha" = "s" ]; then |
cat <<-EOF >> /etc/bashrc |
alias wget="wget --proxy-user=${usuario} --proxy-passwd=${senha}" |
echo -n "Verificando e Instalando dependências \n" |
echo "-----------------------------------------" |
dpkg --get-selections | grep -q alien |
echo "Alien Instalado !" ; |
dpkg --get-selections | grep -q ksh |
dpkg --get-selections | grep -q libstdc++5 |
apt-get install libstdc++5 |
echo "libstdc++5 Instalado !" ; |
dpkg --get-selections | grep -q libstdc++6 |
apt-get install libstdc++6 |
echo "libstdc++6 Instalado !" ; |
if [ $versao = "x86_64" ]; then |
echo "Seu sistema é 64 bits - Instalando ia32-libs " |
apt-get install ia32-libs |
echo "Seu sistema não é 64 bits - logo não precisa do pacote ia32-libs ! " |
echo "ia32-libs Instalado !" ; |
echo "\n\n Inicio da instalação do TSM CLIENT \n\n" |
echo "Informe qual o pacote de liguagem ( tradução do cliente TSM ) : " |
echo "-----------------------------------------------------------\n" |
*) echo -n" Desculpe, opção inválida"; echo ;; |
echo " OPÇÕES DE INSTALAÇÃO " |
echo "---------------------- \n" |
echo " 1 - tsm versão 6.1.0" |
echo " 2 - tsm versão 6.1.3" |
echo " 3 - tsm versão 6.1.4" |
echo " 4 - tsm versão 6.2.0" |
echo " 5 - tsm versão 6.2.1" |
echo " 6 - tsm versão 6.2.2" |
1) echo " Efetuando download do arquivo" ; wget -c $FTP_HOST/v6r1/Linux/LinuxX86/v610/6.1.0.0-TIV-TSMBAC-LinuxX86.tar; echo " Efetuando download language pack"; wget -c $FTP_HOST/v6r1/Linux/LinuxX86/v610/TIVsm-msg.$LNG.i386.rpm ;; |
2) echo " Efetuando download do arquivo" ; wget -c $FTP_HOST/v6r1/Linux/LinuxX86/v613/6.1.3.0-TIV-TSMBAC-LinuxX86.tar; echo " Efetuando download language pack"; wget -c $FTP_HOST/v6r1/Linux/LinuxX86/v613/TIVsm-msg.$LNG.i386.rpm ;; |
3) echo " Efetuando download do arquivo" ; wget -c $FTP_HOST/v6r1/Linux/LinuxX86/v614/6.1.4.0-TIV-TSMBAC-LinuxX86.tar; echo " Efetuando download language pack"; wget -c $FTP_HOST/v6r1/Linux/LinuxX86/v614/TIVsm-msg.$LNG.i386.rpm ;; |
4) echo " Efetuando download do arquivo" ; wget -c $FTP_HOST/v6r2/Linux/LinuxX86/v620/6.2.0.0-TIV-TSMBAC-LinuxX86.tar; echo " Efetuando download language pack"; wget -c $FTP_HOST/v6r2/Linux/LinuxX86/v620/TIVsm-msg.$LNG.i386.rpm ;; |
5) echo " Efetuando download do arquivo" ; wget -c $FTP_HOST/v6r2/Linux/LinuxX86/v621/6.2.1.0-TIV-TSMBAC-LinuxX86.tar; echo " Efetuando download language pack"; wget -c $FTP_HOST/v6r2/Linux/LinuxX86/v621/TIVsm-msg.$LNG.i386.rpm ;; |
6) echo " Efetuando download do arquivo" ; wget -c $FTP_HOST/v6r2/Linux/LinuxX86/v622/6.2.2.0-TIV-TSMBAC-LinuxX86.tar; echo " Efetuando download language pack"; wget -c $FTP_HOST/v6r2/Linux/LinuxX86/v622/TIVsm-msg.$LNG.i386.rpm ;; |
*) echo " Desculpe, opção inválida"; echo ;; |
for i in *.tar; do tar xvf $i; done |
VERSION="`cut -c-5 lista`" |
echo "PREPARANDO ARQUIVOS " |
echo "------------------- " |
alien -g TIVsm-API.i386.rpm |
alien -g TIVsm-BA.i386.rpm |
alien -g TIVsm-API64.i386.rpm |
alien -g TIVsm-msg.$LNG.i386.rpm |
mv TIVsm-API-$VERSION/debian TIVsm-API-$VERSION/DEBIAN |
mv TIVsm-BA-$VERSION/debian TIVsm-BA-$VERSION/DEBIAN |
mv TIVsm-API64-$VERSION/debian TIVsm-API64-$VERSION/DEBIAN |
echo "CRIANDO ARQUIVOS DE CONTROLE " |
echo "--------------------------- " |
touch TIVsm-API-$VERSION/DEBIAN/control |
touch TIVsm-BA-$VERSION/DEBIAN/control |
touch TIVsm-API64-$VERSION/DEBIAN/control |
if [ $versao = "x86_64" ]; then |
echo "Seu sistema é 64 bits - Modificando arquivos para esta plataforma" ; |
cat << EOF > TIVsm-API-$VERSION/DEBIAN/control |
Description: the API IBM Tivoli Storage Manager API |
cat << EOF > TIVsm-BA-$VERSION/DEBIAN/control |
Description: the Backup Archive Client IBM Tivoli Storage Manager Client |
cat << EOF > TIVsm-API64-$VERSION/DEBIAN/control |
Description: the API IBM Tivoli Storage Manager API |
echo "Seu sistema é 32 bits - Modificando arquivos para esta plaforma ! \n " ; |
cat << EOF > TIVsm-API-$VERSION/DEBIAN/control |
Description: the API IBM Tivoli Storage Manager API |
cat << EOF > TIVsm-BA-$VERSION/DEBIAN/control |
Description: the Backup Archive Client IBM Tivoli Storage Manager Client |
echo "Criando pacotes .deb " |
echo "----------------------" |
if [ $versao = "x86_64" ]; then |
dpkg -b TIVsm-API-"$VERSION" |
dpkg -b TIVsm-BA-"$VERSION" |
dpkg -b TIVsm-API64-"$VERSION" |
dpkg -b TIVsm-API-"$VERSION" |
dpkg -b TIVsm-BA-"$VERSION" |
echo "Instalando pacotes .deb " |
echo "------------------------" |
if [ $versao = "x86_64" ]; then |
dpkg -i TIVsm-API-"$VERSION".deb >> install.log |
dpkg -i TIVsm-BA-"$VERSION".deb >> install.log |
dpkg -i TIVsm-API64-"$VERSION".deb >> install.log |
dpkg -i TIVsm-API-"$VERSION".deb >> install.log |
dpkg -i TIVsm-BA-"$VERSION".deb >> install.log |
echo "Criando arquivos de log " |
echo "-------------------------" |
mkdir /var/log/tsm >> install.log |
chmod 700 /var/log/tsm >>install.log |
echo "Criando arquivos de configuração " |
echo "-------------------------------- " |
cd /opt/tivoli/tsm/client/ba/bin >>install.log |
mv dsm.opt.smp dsm.opt >> install.log |
mv dsm.sys.smp dsm.sys >> install.log |
touch inclexcl >> install.log |
echo "Qual o nome do servidor TSM (Console): " |
echo "Qual o endereço IP do servidor TSM (Console): " |
echo "Configurando dsm.opt" |
localhostname="`hostname`" |
echo "Configurando dsm.sys" |
TCPServeraddress $ipservidor |
SCHEDLOGName /var/log/tsm/dsmsched.log |
ERRORLOGname /var/log/tsm/dsmerror.log |
INCLExcl /opt/tivoli/tsm/client/ba/bin/inclexcl |
MANAGEDServices webclient |
echo "Configurando arquivo de exclusões" |
exclude.dir /.../var/spool/squid |
exclude.dir /.../var/spool/cache |
exclude.file /.../[Cc]ache |
exclude.file /.../.Xauthority |
exclude.file /.../.bash_history |
exclude.file /.../.adsmrc |
exclude.file /.../dev/ptmx |
exclude.file /.../dev/tty12 |
exclude.file /.../var/log/dsmsched* |
exclude.file /.../var/log/dsmerror* |
exclude.file /.../random_seed |
echo "Criando script de incialização" |
cat > /etc/init.d/tsm << "EOF" |
dsmc schedule > /dev/null 2>%1 & |
DESC="TSM Client Acceptor Daemon" |
DAEMON=/opt/tivoli/tsm/client/ba/bin/dsmcad |
SCRIPTNAME="/etc/init.d/tsm" |
. /lib/lsb/init-functions |
DSM_CONFIG=/opt/tivoli/tsm/client/ba/bin/dsm.opt |
DSM_DIR=/opt/tivoli/tsm/client/ba/bin/ |
export DSM_DIR DSM_CONFIG DSM_LOG |
echo "You must be a root user" 2>&1 |
if [ ! $(pidof_dsmcad) ]; then |
if [ $(pidof_dsmcad) ]; then |
echo "$DESC is not running" |
log_daemon_msg "Starting" $DESC $DAEMON |
if [ $(pidof dsmcad) ]; then |
log_daemon_msg "Stopping" $DESC $DAEMON |
if [ $(pidof $DAEMON) ]; then |
echo "Usage: /etc/init.d/dsmcad {start|stop|restart|status}" |
echo "Configurando permissões de incialização" |
echo "Corrigindo possíveis erros " |
echo "/opt/tivoli/tsm/client/api/bin/" > /etc/ld.so.conf.d/tivoli.conf |
cp -R /opt/TIVsm-msg.$LNG-$VERSION/opt/tivoli/tsm/client/lang/$LNG /opt/tivoli/tsm/client/lang/ |
cp -R /opt/TIVsm-msg.$LNG-$VERSION/opt/tivoli/tsm/client/lang/$LNG /opt/tivoli/tsm/client/ba/bin/ |
ln -s /opt/tivoli/tsm/client/lang/EN_US /opt/tivoli/tsm/client/ba/bin/$LNG |
ln -s /opt/tivoli/tsm/client/lang/EN_US /opt/tivoli/tsm/client/ba/bin/EN_US |
echo "Verificando se os Serviços estão ativos " |
netstat -tlpn | grep dsmc |
echo "REGISTRANDO O CLIENTE JUNTO AO TSM SERVER " |
echo "-----------------------------------------" |
read -p "Seu Servidor TSM ( Console )esta instalado em Ambiente Linux [s/N]" resposta |
resposta=$(echo $resposta | tr [[:upper:]] [[:lower:]] | cut -c1) |
if [ "$resposta" = "s" ]; then |
echo "Registrando cliente ( nó ) junto ao Servidor Linux" |
echo "Qual a nome do Usuario administrador no TSM SERVER : " |
echo "Qual a senha do administrador no TSM SERVER : " |
echo "Crie uma senha para o cliente ( novo nó ) : " |
dsmadmc -id=$admuser -password=$admpassword "register node $localhostname $passwdclient" |
echo "Registre Manualmente" |
echo "Limpando arquivos de Instalação" |
for i in `cat limpar` ; do |
echo "INSTALAÇÃO TERMINADA - NÃO ESQUEÇA DE REGISTRAR O NÓ E CRIAR O PLANEJAMENTO ( SCHEDULE ) \n " |
done
Oi welington,
ResponderExcluirObrigado por referênciar meu blog.
Só peço para referenciar e colocar o link de acesso sem duplicar o conteúdo pois prejudica a visualização no google e a taxa de rankeamento seo.
O google entende como conteúdo duplicado e me pune por isso.
Grande abraço.
Paulo