Fazendo login via ssh sem precisar usar senha

ssh

Quando trabalhamos fazendo conexões ssh em servidores remotos várias vezes ao dia via terminal precisamos saber sempre os utilizadores e senhas dos hosts remotos isto se torna um pouco entediante as vezes.

Exemplo, se voce tiver um servidor ssh instalado na sua máquina, pode testa-lo sem precisar se conectar em um servidor remoto, tente:

ssh localhost

Precisou de senha, não é mesmo?

Que tal se não fosse necessário digitar a senha?

Então é para isto que este script serve!

Basta usa-lo: ./sshnologin.sh ipservidorremoto


# Simple script for copy the ssh keys to a remote host.
# autor: matafe
#!/bin/bash

if [ "x$1" = "x" ]; then
echo 'Target hostname or IP required!'
exit 1;
fi

target_host_ip="$1"
file_key_local="~/.ssh/id_rsa.pub"

echo "Coping '$file_key_local' to host '$target_host_ip' ..."
scp ~/.ssh/id_rsa.pub $target_host_ip:~/

echo "Adding keys on remote host '$target_host_ip' ..."
ssh $target_host_ip 'if [ ! -d ~/.ssh ]; then mkdir ~/.ssh; fi; chmod 700 ~/.ssh; cat ~/id_rsa.pub >> ~/.ssh/authorized_keys; chmod 600 ~/.ssh/authorized_keys; rm ~/id_rsa.pub; chmod 750 ~/'

echo "Testing configuration..."
ssh $target_host_ip 'echo "Configuration done!"'

Pode testá-lo, provavelmente agora já não precise mais de senha!

ssh localhost

DICA: Caso queira colocar seu script no path para de qualquer lugar do terminal poder executá-lo. É só criar um link simbólico em “/usr/local/bin“. Lembre de dar permissão de execução para seu script ssh! (chmod 755 /home/mferraz/Dev/Unix/Scripts/sshnologin.sh)

Ex: ./sshnologin.sh

sudo ln -s /home/mferraz/Dev/Unix/Scripts/sshnologin.sh /usr/local/bin/sshnologin.sh

Sei que talvez voce já sabia, mas é bem útil, não? 🙂

Criando uma rotina de backup no Mac através de script.

Ja temos várias maneiras de fazer backup dos nossos dados, cada um tem o seu jeito preferido, a sua ferramenta de confiança!

No Mac temos um aplicativo muito bom, a “Máquina do Tempo”, ou “Time Machine”.

Porém neste post vou dar um exemplo, usando o rsync, um software livre encontrado em qualquer distribuição UNIX.

Para instalá-lo, usar o Mac ports, Homebrew ou qualquer gerenciador de software de sua preferência! (Desculpe, não é o objetivo aqui mostrar sua instalação)

A grande vantagem do rsync é que voce pode fazer backup de forma incremental dos seus dados, e não precisa ficar apagando fotos backup antigo (snapshots), caso fique cheio seu HD Externo de backup.

Segue o script run-backup.sh.command :

* O .command é apenas para ficar como um atalho do desktop do meu mac e ser iterativo, pois se fosse apenas o shell script, se eu quisesse ver o resultado deveria executá-lo pelo terminal.


# Simple script for run an incremental backup using rsync unix command.
# autor: matafe
#!/bin/bash

echo "Running My Backup..."

SOURCE_FOLDER="/Users/matafe/"
TARGET_FOLDER="/Volumes/matafe-backup/MyBackup"

EXCLUDE_FILES=('*.class' '*.jasper' '*.log' '.Trash' '.grails' '.jenkins' '.gradle' '.m2' '.ivy2' '.nmp' '.dropbox' 'Library')

TMP_EXCLUDE=""

for i in "${EXCLUDE_FILES[@]}"
do
	TMP_EXCLUDE="$TMP_EXCLUDE --exclude=$i"
done

CMD="rsync -av --progress $TMP_EXCLUDE $SOURCE_FOLDER $TARGET_FOLDER"

echo "$CMD"

eval $CMD

read -p "Press any key to continue... " -n1 -s

echo "Done."

Já é bem auto explicativo, mas ai vai algumas observações:

– De: /Users/matafe/
– Para: /Volumes/matafe-backup/MyBackup
– Irá excluir alguns arquivos: .log, *.class, …. ( não quero copia-los )
– No final ira mostrar o resultado e aguardar por pressionar algum tecla para fechar.

E ai? Qual é a sua ferramenta preferida?

Criando um repositório git privado na nuvem de graça

git

Neste post irei descrever como se criar um repositório git privado na nuvem de graça usando o serviço de armazenamento Dropbox, poderia ser qualquer um outro, ou até mesmo uma pasta em um servidor remoto, ou até mesmo um disco de backup.

Mas qual a vantagem disto? Pois já temos serviços muito bons que já armazenam meus repositórios na internet, como por exemplo o GitHub ( que por sinal é muito bom! ) porem só para voce armazenar projetos públicos, em que qualquer pessoa poderá ter acesso, a menos que voce pague pelo serviço.

Bom, vamos lá!

Vamos primeiro criar as pasta REMOTA onde vai ficar meu pequeno projeto privado.


# Pastas remotas
[matafe@Mauricios-MacBook-Pro:~ ] $ mkdir -p ~/Dropbox/ProjectsRepositories/myproject.git
[matafe@Mauricios-MacBook-Pro:~ ] $ cd ~/Dropbox/ProjectsRepositories/myproject.git/
[matafe@Mauricios-MacBook-Pro:~/Dropbox/ProjectsRepositories/myproject.git ] $ git --bare init
Initialized empty Git repository in /private/tmp/repo/myproject.git/

Pronto!

Agora vamos criar nosso projeto LOCAL.

#Local
[matafe@Mauricios-MacBook-Pro:~ ] $ mkdir -p ~/MyLocalProjects/
[matafe@Mauricios-MacBook-Pro:~ ] $ cd ~/MyLocalProjects/
# Criando um projeto de exemplo usando o Maven.
[matafe@Mauricios-MacBook-Pro:~/MyLocalProjects ] $ mvn archetype:generate -DgroupId=com.mycompany -DartifactId=myproject -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
[matafe@Mauricios-MacBook-Pro:~/MyLocalProjects ] $ cd myproject
[matafe@Mauricios-MacBook-Pro:~/MyLocalProjects/myproject ] $ git init
[matafe@Mauricios-MacBook-Pro:~/MyLocalProjects/myproject ] $ git add .
[matafe@Mauricios-MacBook-Pro:~/MyLocalProjects/myproject ] $ git commit -m 'initial commit'
[matafe@Mauricios-MacBook-Pro:~/MyLocalProjects/myproject ] $ git remote add origin  ~/Dropbox/ProjectsRepositories/myproject.git
[matafe@Mauricios-MacBook-Pro:~/MyLocalProjects/myproject ] $ git push origin master

Pronto! Seu projeto já esta seguro!

Se quiser do seu computador do trabalho ou de qualquer outro lugar ja pode clonar o seu projeto!

git clone ~/Dropbox/ProjectsRepositories/myproject.git

E então? Foi útil essa dica pra você?

Mudando entre versões do JDK no Mac – OSX

Caso queira manter diferentes versões do Java JDK instalado e ficar alterando entre elas basta usar:

/usr/libexec/java_home -V

Exemplo:

[matafe@Mauricios-MacBook-Pro:~ ] $ java -version

java version "1.8.0_40"
Java(TM) SE Runtime Environment (build 1.8.0_40-b25)
Java HotSpot(TM) 64-Bit Server VM (build 25.40-b25, mixed mode)

[matafe@Mauricios-MacBook-Pro:~ ] $ /usr/libexec/java_home -V

Matching Java Virtual Machines (2):
1.8.0_40, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home
1.7.0_79, x86_64: "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home

[matafe@Mauricios-MacBook-Pro:~ ] $ export JAVA_HOME=$(/usr/libexec/java_home -v1.7.0_79)


[matafe@Mauricios-MacBook-Pro:~ ] $ java -version

java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)

Pronto! Mudamos do JDK 1.8.0_40 para o 1.7.0_79