Arquivo

Arquivo da Categoria ‘Shell Script’

Utilitário de acesso a maquinas remotas com ssh – fast-remote

14, janeiro, 2011 2 comentários

Bom, quem nunca esqueceu o IP da maquina que tem o servidor de desenvolvimento da sua aplicação? você até lembra que nome dela era ‘dev’ alguma coisa….. e que o ip começava com 192.168.4. mas não tem certeza.

Essa história passa a ser muito comum quando:

  • Quantidade de projetos que você trabalha vai aumentando
  • Complexidade de serviços utilizados pela sua aplicação aumenta
  • Quantidade de ambientes aumenta (desenvolvimento, teste, homologação, produção)

Como sou desenvolvedor, tenho que lembrar de um monte de coisas, não vou me dar ao trabalho de lembrar mais 30 IPs diferentes para trabalhar. Surgindo assim o ‘fast-remote’. Um simples script shell criado para te ‘lembrar’ dos nomes e ips das suas maquinas.

Ele está hospedado no github em: https://github.com/eliezer/fast-remote

Como instalar?

Faça um clone do repositório no local que preferir instalar.

[eliezer@vader ~]$ cd /opt/
[eliezer@vader opt]$ git clone git://github.com/eliezer/fast-remote.git
Cloning into fast-remote...
remote: Counting objects: 15, done.
remote: Compressing objects: 100% (15/15), done.
remote: Total 15 (delta 3), reused 0 (delta 0)
Receiving objects: 100% (15/15), done.
Resolving deltas: 100% (3/3), done.

Execute o instalador

[eliezer@vader opt]$ cd fast-remote/
[eliezer@vader fast-remote]$ ./fast-remote install
Installation successfully
Run command: 'source /home/eliezer/.bashrc' or logout/login
usage: fast-remote --help

Recarregue o bashrc (linux) ou bash_profile (mac)

Ajuda:

[eliezer@vader opt]$ fast-remote --help
Usage:

'fast-remote install' to install
'fast-remote set_user' to define default user connect
'fast-remote' to connect ssh (ssh SERVER)
'fast-remote /home/user/file.tar' to transfer file scp (scp file SERVER:/HOME_DIR)

Além do acesso ssh o fast-remote também faz transferência de arquivos utilizando scp.

Executando:

[eliezer@vader ~]$ fast-remote

Agora é só configurar seu servidores favoritos no arquivo server.properties e utilizar.

Lendo arquivo de propriedades com Shell Script – IFS

21, setembro, 2009 2 comentários

Bom, pode parecer simples, mas quando a velocidade é o seu primeiro quesito, isso pode mudar um pouco. Mas espera aí, é apenas ler um arquivo e fazer um split pegar a chave e o valor. Simples assim mesmo, mas quando o assunto é shell script um simples split não é tão simples.

A primera forma de se fazer seria fazer com um cut, veja:

1
echo "chave=valor" | cut -d = -f 1

Legal, funciona, mas quando seu arquivo de properties é grande, ou que esse script rode toda hora, a velocidade do um simples cut que funciona passa a ser um problema.

Uma outra forma de se fazer isso é usar o IFS – Internal Field Separator para fazer isso de uma forma decente.

Então, vamos lá. Pimeiro meu arquivo de propriedades:

sample.properties

1
2
caminho=/tmp
version=1.0

Fiz um script simples para representar o problema. Função rox com IFS e função sux com CUT.

sample.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/bin/bash
 
rox(){
	IFS_OLD=$IFS
	IFS="="
	while read key value
	do
		echo "key = $key"
		echo "Value = $value" 
	done < sample.properties 
	IFS=$IFS_OLD
}
 
sux(){
	while read line
	do
		key=`echo $line | cut -d = -f 1`
		value=`echo $line | cut -d = -f 2`
		echo "key = $key"
		echo "Value = $value"
	done < sample.properties 
}
clear
echo "rox--------------------------------------"
time rox
echo "sux--------------------------------------"
time sux

Veja o resultado:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
rox--------------------------------------
key = caminho
Value = /tmp
key = version
Value = 1.0
 
real	0m0.001s
user	0m0.000s
sys	0m0.000s
 
sux--------------------------------------
key = caminho
Value = /tmp
key = version
Value = 1.0
 
real	0m0.024s
user	0m0.007s
sys	0m0.019s

Notem a velocidade do script. Não é ser xiita, mas sim fazer da forma correta. :)