terça-feira, 22 de dezembro de 2015

rdesktop no Linux Mint

Acessar remotamente uma máquina Windows pelo LMDE2 é simples, veja:

Instale o pacote rdesktop pelo apt-get:

$ sudo apt-get install rdesktop


Após a instalação, acesse a máquina Windows com o comando abaixo:

$ rdesktop -5 -a 24 -g 1024x768 172.22.4.10 &


Explicando o comando acima:
-5: versão do RDP
-a: indica a quantidade de bits de cores, no caso 24 bits, podendo ser também 16 ou 8
-g: indica a resolução de tela, no caso 1024x768, podendo ser, por exemplo, 800x600
&: executa o comando em segundo plano, liberando o prompt para outras tarefas.



Caso queira acessar com a tela cheia:

$ rdesktop -5 -a 24 -f 172.22.4.10 &

segunda-feira, 21 de dezembro de 2015

Colocar scripts na inicialização do Linux

Estou usando o LMDE 2, e quero colocar um script que fiz para que toda vez que eu inicialize a máquina, possa automaticamente, montar algumas pastas compartilhadas AD (Aactive Directory), que tenho aqui na rede Windows, onde trabalho.

Basicamente, o script é esse:

sudo mount -t cifs //172.22.4.250/Lucio /home/lucio/csi/lucio -o username=lucio,password=***
sudo mount -t cifs //172.22.4.250/Publico /home/lucio/csi/publico -o username=lucio,password=***

Assim, posso montar a pasta lucio e publico do AD.

Para executar automaticamente esse script, vamos copiar esse script para /etc/init.d, colocar um conteúdo necessário para o comando update-rc.d, e dar permissão 755.

O script completo fica assim:

#!/bin/sh
### BEGIN INIT INFO  
# Provides:          csiSharedFolder.sh
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Example initscript
# Description:       This file should be used to construct scripts to be
#                    placed in /etc/init.d.  This example start a
#                    single forking daemon capable of writing a pid
#                    file.  To get other behavoirs, implemend
#                    do_start(), do_stop() or other functions to
#                    override the defaults in /lib/init/init-d-script.
### END INIT INFO

sudo mount -t cifs //172.22.4.250/Lucio /home/lucio/csi/lucio -o username=lucio,password=lucius02
sudo mount -t cifs //172.22.4.250/Publico /home/lucio/csi/publico -o username=lucio,password=lucius02


Estando ele no diretório /etc/init.d, dada a permissão 755, vamos adiciona-lo à inicialização do sistema.
O nome do meu script é csiSharedFolder.sh

$ sudo  update-rc.d csiSharedFolder.sh defaults 

Provavelmente dará algumas mensagens de erro, mas teste-o usando o comando abaixo:

$ sudo service csiSharedFolder.sh start

Caso queira remover da inicialização:

$ update-rc.d csiSharedFolder.sh remove 

Certifique que as pastas estão sendo acessadas e pronto, deu tudo certo. Ainda estou pesquisando o porquê das mensagens de erro, assim que eu tiver uma solução atualizarei aqui.

Montar NTFS no LMDE2

Para montar um sistema de arquivos Windows no LMDE 2 use o comando abaixo:

$ sudo mkdir /mnt/win
$ sudo mount -t ntfs /dev/sda2 /mnt/win



*** Caso apareça a seguinte mensagem de erro:

The disk contains an unclean file system (0, 0).
Metadata kept in Windows cache, refused to mount.
Failed to mount '/dev/sda2': Operação não permitida
The NTFS partition is in an unsafe state. Please resume and shutdown
Windows fully (no hibernation or fast restarting), or mount the volume
read-only with the 'ro' mount option.

Execute o seguinte comando:

$ sudo ntfsfix /dev/sda2
Mounting volume... The disk contains an unclean file system (0, 0).
Metadata kept in Windows cache, refused to mount.
FAILED
Attempting to correct errors... 
Processing $MFT and $MFTMirr...
Reading $MFT... OK
Reading $MFTMirr... OK
Comparing $MFTMirr to $MFT... OK
Processing of $MFT and $MFTMirr completed successfully.
Setting required flags on partition... OK
Going to empty the journal ($LogFile)... OK
Checking the alternate boot sector... OK
NTFS volume version is 3.1.
NTFS partition /dev/sda2 was processed successfully.


Após o término do comando ntfsfix, execute o comando mount de novo: 

$ sudo mount -t ntfs /dev/sda2 /mnt/win

Trocar monitor principal no Linux Mint


Tenho dois monitores, a minha esquerda o monitor de 22', e a minha direita, o monitor de 19'. Veja:


Veja que o monitor principal está configurado para que seja o da minha direita, ou seja, o de 19'. Contudo, gostaria que o monitor de 22' seja o padrão, através dessa tela de configuração não conseguia ter sucesso, o monitor principal ainda continuava sendo o de 19'.

Após algumas pesquisas consegui a configuração pretendida com duas linhas de comando. Segue:

$ xrandr | grep -w connected
DVI-I-1 connected primary 1366x768+1920+0 (normal left inverted right x axis y axis) 413mm x 234mm
HDMI-0 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 477mm x 268mm

A saída do comando acima detectou o DVI-I-1, que é o meu monitor de 19' e o HDMI-0 o de 22', repare que o DVI está configurado como primary. Vamos trocar para que o HDMI seja o monitor principal:

$ xrandr --output HDMI-0 --mode 1920x1080 --primary --left-of DVI-I-1 --output DVI-I-1 --mode 1366x768

Explicando, usei os dados do primeiro comando para preencher o comando acima. Pela pesquisa que fiz, ao invés de --left-of, tinha visto o comando --right-of, e executei-o, mas tive problemas na exibição entre os monitores. Troquei o comando para o que está acima e deu tudo certo.

Agora, executando o primeiro comando, tive a seguinte saída:

$ xrandr | grep -w connected
DVI-I-1 connected 1366x768+1920+0 (normal left inverted right x axis y axis) 413mm x 234mm
HDMI-0 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 477mm x 268mm

Reparem que agora, o monitor principal é o HDMI-0, como pretendido.


--- Editado em 23/12/2015

Apesar da configuração pelo xrandr, para de definir o monitor principal, tive a infelicidade de perceber que tal configuração não persistia ao reiniciar a máquina. Após profundas pesquisas cheguei a uma forma simples de configurar o monitor principal, veja:

Pelo terminal, vá ao diretório .config
$ cd ~/.config

Edite o arquivo monitors.xml
$ sudo vim monitors.xml

<monitors version="1">
  <configuration>
      <clone>no</clone>
      <output name="HDMI-1">
          <vendor>GSM</vendor>
          <product>0x5a26</product>
          <serial>0x01010101</serial>
          <width>1920</width>
          <height>1080</height>
          <rate>60</rate>
          <x>0</x>
          <y>0</y>
          <rotation>normal</rotation>
          <reflect_x>no</reflect_x>
          <reflect_y>no</reflect_y>
          <primary>no</primary>
      </output>
      <output name="VGA-1">
      </output>
      <output name="DVI-I-1">
          <vendor>AOC</vendor>
          <product>0x1900</product>
          <serial>0x01010101</serial>
          <width>1366</width>
          <height>768</height>
          <rate>60</rate>
          <x>1920</x>
          <y>0</y>
          <rotation>normal</rotation>
          <reflect_x>no</reflect_x>
          <reflect_y>no</reflect_y>
          <primary>no</primary>
      </output>
  </configuration>
  <configuration>
      <clone>no</clone>
      <output name="DVI-I-0">
      </output>
      <output name="VGA-0">
      </output>
      <output name="DVI-I-1">
          <vendor>AOC</vendor>
          <product>0x1900</product>
          <serial>0x01010101</serial>
          <width>1366</width>
          <height>768</height>
          <rate>60</rate>
          <x>1920</x>
          <y>0</y>
          <rotation>normal</rotation>
          <reflect_x>no</reflect_x>
          <reflect_y>no</reflect_y>
          <primary>yes</primary>
      </output>
      <output name="HDMI-0">
          <vendor>GSM</vendor>
          <product>0x5a26</product>
          <serial>0x01010101</serial>
          <width>1920</width>
          <height>1080</height>
          <rate>60</rate>
          <x>0</x>
          <y>0</y>
          <rotation>normal</rotation>
          <reflect_x>no</reflect_x>
          <reflect_y>no</reflect_y>
          <primary>no</primary>
      </output>
  </configuration>
</monitors>


Repare que no meu arquivo monitors.xml tem dois trechos com a tag configuration. Procure a que tem a tag primary com o valor yes
Veja que ela está configurando o monitor DVI como primary, mas eu gostaria que o monitor HDMI fosse o principal. Então troquei a configuração, ficando assim:
...
      <output name="DVI-I-1">
          <vendor>AOC</vendor>
          <product>0x1900</product>
          <serial>0x01010101</serial>
          <width>1366</width>
          <height>768</height>
          <rate>60</rate>
          <x>1920</x>
          <y>0</y>
          <rotation>normal</rotation>
          <reflect_x>no</reflect_x>
          <reflect_y>no</reflect_y>
          <primary>no</primary>
      </output>
      <output name="HDMI-0">
          <vendor>GSM</vendor>
          <product>0x5a26</product>
          <serial>0x01010101</serial>
          <width>1920</width>
          <height>1080</height>
          <rate>60</rate>
          <x>0</x>
          <y>0</y>
          <rotation>normal</rotation>
          <reflect_x>no</reflect_x>
          <reflect_y>no</reflect_y>
          <primary>yes</primary>
      </output>
...

Salve o arquivo, reinicie a máquina, e pronto!

OBS: Configuração testada no LMDE2

quarta-feira, 25 de novembro de 2015

Sincronizando git com Bitbucket


Para usar o Bitbucket como servidor git, siga os passos abaixo:

1 - Criar uma chave RSA

$ cd ~/.ssh 
$ ssh-keygen -t rsa -b 4096 -C "luciozanette@gmail.com"

Nesse caso usei meu email como comentário. Isso será usado na chave pública, opte por usar o comentário que desejar.

Coloque o nome para a chave ou ENTER para usar a default, id_rsa

2 - Executar o comando abaixo:

$ eval "$(ssh-agent -s)"

Esse comando irá abrir uma conexão com o agente autenticador da sua máquina.

3 - Adicionar a chave recém criada

$ ssh-add ~/.ssh/gitkey

4 - Certificar que a chave foi adicionada

$ ssh-add -l
4096 03:bd:90:d5:e8:e7:76:50:e8:06:be:4e:d3:6e:1f:ad /home/luciozanette/.ssh/gitkey (RSA)

5 - Vá na sua área do Bitbucket, em Settings >> SSH Keys, clique em Add Key, e adicione sua chave. 

Imprima sua chave pública para ser copiada e depois colada no campo Key.

$ cat ~/.ssh/gitkey.pub

Coloque um nome para sua chave no campo Label e pronto, chave adicionada. Agora você pode dar sequência para mandar seu repositório local para ser armazenado nas nuvens.


# Atualizado em 05/10/2016 -----------

Após concluir os passos acima, vamos agora sincronizar um projeto com o bitbucket.

Em meu caso, farei a sincronização de um projeto PHP. Em minha pasta de projetos, crio uma nova pasta, chamada MeuProjeto:


$ cd ~/www

$ mkdir MeuProjeto

$ cd MeuProjeto

Dentro da minha pasta, inicie o git:

$ git init

Agora faça associe o projeto que está no Bitbucket com a pasta criada:

$ git remote add origin git@bitbucket.org:luciozanette/MeuProjeto.git

E, por fim, faça o "download" (pull) dos fontes:

$ git pull origin master

*Nesse caso meu projeto está no branch master.


E pronto, agora é só continuar seu desenvolvimento!