Mostrar mensagens com a etiqueta cli. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta cli. Mostrar todas as mensagens

segunda-feira, 18 de dezembro de 2023

Encriptar /home/username

O software eCryptfs tem como mote: "The enterprise cryptographic filesystem for Linux" e permite efetuar uma gestão fácil da encriptação de ficheiros/pastas em Linux.

Para tal, o pacote ecryptfs-utils está disponível para instalação na maior parte das distribuições Linux.

É necessário ter todos os processos do utilizador terminados e fazer login com outro utilizador com privilégios sudo/root.

Executar a ferramenta de migração e seguir os passos:

ecryptfs-migrate-home -u username

 

Antes de reiniciar deve efetuar login com o utilizador e verificar se consegue fazer login e aceder aos seus ficheiros.

Caso algo corra mal existe uma cópia do diretório designada de username.Qualquercoisaestranha e que pode ser restaurada.


Se tudo correr bem deve executar-se:

ecryptfs-unwrap-passphrase

Introduzir a passphrase e obtém-se a mount passphrase que deve ser guardada em local seguro pois permite recuperar os dados encriptados caso se esqueça o login da conta.



[1] - ecryptfs - https://www.ecryptfs.org/









sexta-feira, 3 de novembro de 2023

MySQL Workbench - Instalação e Configuração SNAP

Caso se utilize o MySQL Workbench em Linux é possível instalar através de SNAP.

Para instalar snap:

sudo apt install snap

Depois resta instalar os snaps pretendidos. Neste caso:

snap install core

snap install  install mysql-workbench-community

Para permitir acesso do snap do MySQL Workbench a chaves SSH para tunneling de ligações a servidores MySQL por SSH é necessário ligar o plug:

sudo snap connect mysql-workbench-community:ssh-keys

Para ver as ligações existentes nos snaps:

 snap connections --all

Interface                 Plug                                                Slot                            Notes
content                   -                                                   gtk-common-themes:gtk-2-themes  -
content[gnome-42-2204]    mysql-workbench-community:gnome-42-2204             gnome-42-2204:gnome-42-2204     -
content[gtk-3-themes]     mysql-workbench-community:gtk-3-themes              gtk-common-themes:gtk-3-themes  -
content[icon-themes]      mysql-workbench-community:icon-themes               gtk-common-themes:icon-themes   -
content[sound-themes]     mysql-workbench-community:sound-themes              gtk-common-themes:sound-themes  -
cups-control              mysql-workbench-community:cups-control              -                               -
desktop                   mysql-workbench-community:desktop                   :desktop                        -
desktop-legacy            mysql-workbench-community:desktop-legacy            :desktop-legacy                 -
gsettings                 mysql-workbench-community:gsettings                 :gsettings                      -
home                      mysql-workbench-community:home                      :home                           -
network                   mysql-workbench-community:network                   :network                        -
opengl                    mysql-workbench-community:opengl                    :opengl                         -
password-manager-service  mysql-workbench-community:password-manager-service  -                               -
removable-media           mysql-workbench-community:removable-media           -                               -
ssh-keys                  mysql-workbench-community:ssh-keys                  :ssh-keys                       manual
wayland                   mysql-workbench-community:wayland                   :wayland                        -
x11                       mysql-workbench-community:x11                       :x11                            -


Referências

https://snapcraft.io/docs/interface-management

quarta-feira, 11 de outubro de 2023

NVMe | Verificação e Benchmark

Instalar ferramenta nvme:

apt install  nvme-cli

Listar armazenamento nvme no sistema:

nvme list -v


Verificar a ligação (deve obter-se o Address da unidade nvme a partir da lista anterior e substituir):

sudo lspci -vv -nn -s 0000:01:00.0|grep Lnk

(...)
LnkSta:    Speed 16GT/s, Width x4
(...)

 

Referências

[1] - NVMe storage verification and benchmarking - Krzysztof Ciepłucha https://medium.com/@krisiasty/nvme-storage-verification-and-benchmarking-49b026786297

quinta-feira, 5 de outubro de 2023

VirtualBox - Linux Guest Aditions

 Testado com host VirtualBox 7.0 e guest Lubuntu 20.04 LTS.

 

Para utilizar o Guest Aditions é necessário instalar kernel modules (cf. https://www.virtualbox.org/manual/ch02.html#externalkernelmodules), no caso do Lubuntu já tem os headers instalados foi apenas necessário instalar GCC e make:

sudo apt install gcc make

De seguida é necessário ir a Devices e Insert Guest Aditions CD... De onde será necessário executar com sudo o instalador para linux:

sudo ./VBoxLinuxAdditions.run

Para aceder a pastas partilhadas do host no guest é necessário adicionar o grupo vboxsf ao utilizador no guest (cf. https://dev.to/rahedmir/virtualbox-cannot-access-shared-folder-items-permission-denied-fixed-59mi):

sudo usermod -a -G vboxsf utilizador

Depois de reiniciar é possível aceder a pastas partilhadas do host.

sábado, 30 de setembro de 2023

Clonezilla - Erro com partição NTFS is scheduled for a check

Ao realizar o clone de uma disco com uma partição NTFS suja o Clonezilla não consegue concluir o processo e apresenta uma mensagem parecida com a seguinte:

NTFS Volume '/dev/sdaX' is scheduled for a check or it was shutdown uncleanly. Please reboot Windows or fix it by fsck.

Abortando o resto do clone ´é possível aceder a uma consola e corrigir os problemas na partição NTFS com:

sudo ntfsfix /dev/sdaX

sudo ntfsfix -d /dev/sdaX

Depois resta iniciar o clonezilla novamente com:

ocs-live

E repetir o processo de criação do clone.

 


terça-feira, 29 de agosto de 2023

Testar Velocidade do Armazenamento

Escrita | Testar a velocidade de escrita

dd bs=128k count=100k if=/dev/zero of=test conv=fdatasync

Exemplo num array RAID1 com 2x M.2 NVMe 1TB
102400+0 records in
102400+0 records out
13421772800 bytes (13 GB, 12 GiB) copied, 7.80817 s, 1.7 GB/s

Exemplo num array RAID1 com 2x SATA6G HDD 1TB
10240+0 records in
10240+0 records out
1342177280 bytes (1.3 GB, 1.2 GiB) copied, 14.8238 s, 90.5 MB/s
 

Leitura | Testar a velocidade de leitura

hdparm -Ttv /dev/mapper/vg1-lv_root

/dev/mapper/vg1-lv_root:
 readonly      =  0 (off)
 readahead     = 256 (on)
 geometry      = 0/0/0, sectors = 1950203904, start = 0
 Timing cached reads:   36902 MB in  2.00 seconds = 18478.49 MB/sec
 Timing buffered disk reads: 10242 MB in  3.00 seconds = 3413.64 MB/sec


Referências

[1] Which benchmark utilities are recommended for testing NVMe transfer performance in a Linux Environment?

sábado, 4 de dezembro de 2021

Instalação de cliente VPN com SNX - Debian

Instalação do cliente SSL Network Extender para ligação à VPN da Universidade de Aveiro.


Instalar o software cliente

Descarregar o instalador a partir do site
https://www.ua.pt/pt/stic/teletrabalho_vpn

Extrair do zip e instalar segundo as instruções.


Verificar bibliotecas em falta

sudo ldd /usr/bin/snx

    linux-gate.so.1 (0xf7f7e000)
    libX11.so.6 => not found
    libpthread.so.0 => /lib32/libpthread.so.0 (0xf7f30000)
    libresolv.so.2 => /lib32/libresolv.so.2 (0xf7f10000)
    libdl.so.2 => /lib32/libdl.so.2 (0xf7f08000)
    libpam.so.0 => not found
    libnsl.so.1 => /lib32/libnsl.so.1 (0xf7ee8000)
    libstdc++.so.5 => not found
    libc.so.6 => /lib32/libc.so.6 (0xf7cf8000)
    /lib/ld-linux.so.2 (0xf7f80000)


É sugerido instalar os seguintes pacotes:

apt install libstdc++5:i386 libpam0g:i386 libx11-6:i386

Como são pacotes para a arquitetura i386, no caso de dar erro é necessário adicionar a arquitetura e atualizar a cache de pacotes:

dpkg --add-architecture i386

apt update

De seguida já será possível instalar as dependências sem erros:
apt install libstdc++5:i386 libpam0g:i386 libx11-6:i386


Utilizar o cliente snx

Iniciar sessão na VPN

snx -s go.ua.pt -u user@ua.pt


Terminar sessão na VPN

snx -d

sábado, 12 de dezembro de 2020

Dança das Cadeiras - Script

O jogo da Dança das Cadeiras é necessário que a música páre aleatoriamente para que os jogadores possam disputar as cadeiras livres.

Uma forma simples de se alcançar isso com o audacious é colocar a reproduzir uma música e utilizar o comando sleep para esperar aleatoriamente e depois pausar a reprodução com a ferramenta audtool:

sleep $((15 + RANDOM % 30)) && audtool --playback-pause

 

Para se repetir rapidamente na consola sem ser necessário iniciar a reprodução novamente no audacious é possível utilizar o seguinte:

audtool --playback-pause && sleep $((15 + RANDOM % 30)) && audtool --playback-pause


sábado, 20 de junho de 2020

Google Drive File Stream - Linux

Não havendo aplicação nativa para Linux do Google Drive File Stream a comunidade cria e partilha as suas soluções: google-drive-ocamlfuse.

Instalação

Na documentação existem diversas opções para a instalação. Neste caso utilizei as instruções para Debian Stretch.

Instalação de dependências

apt install software-properties-common dir

Adicionar repositório

Criar um ficheiro para o repositório apt:
nano /etc/apt/sources.list.d/google-drive-ocamlfuse.list

Acrescentar ao ficheiro:
deb http://ppa.launchpad.net/alessandro-strada/ppa/ubuntu xenial main

Adicionar a chave do servidor ao apt:
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys AD5F235DF639B041

Instalar

Atualizar a lista de pacotes:
apt update

Instalar o pacote:
apt install google-drive-ocamlfuse

Utilização

Primeira Utilização

Na primeira utilização será configurado o acesso ao Google Drive. Assim, deve executar-se o programa sem qualquer argumento:
google-drive-ocamlfuse

O comando cria uma estrutura de pastas de configuração em ~/.gdfuse/default que contém o ficheiro de configuração config.

De seguida abre o browser e pede para iniciar sessão com a conta Google que dará acesso ao Drive correspondente. Após iniciar-se sessão parece que o processo fica parado e pode demorar algum tempo até a linha de comandos indicar que configurou tudo com sucesso e sair do programa voltando à shell normal.

Pastas

Antes de se começar a utilizar convém criar um diretório que será o ponto de montagem dos ficheiros Google Drive.
Assim, pode criar-se:
mkdir ~/DRIVE

Caso se pretenda ter utilizadores ou drives diferentes podem criar-se diferentes diretórios para cada um desses fins. Como previa essa utilização criei uma pasta para a drive pessoal:
mkdir ~/DRIVE/Drive

Montar Google Drive

Para se aceder aos ficheiros é necessário executar o comando:
google-drive-ocamlfuse ~/DRIVE/Drive

A partir deste momento na pasta ~/DRIVE/Drive estarão os ficheiros e pastas tal e qual como no Google Drive e é possível abrir, editar, copiar, colar, mover, etc.

Desmontar Google Drive

Caso se pretenda terminar a utilização é possível desmontar com o comando:
fusermount -u ~/DRIVE/Drive

Utilização de Outras Contas e Team Drives

No caso de ser necessário utilizar outras contas é possível utilizar o parâmetro -label para definir outras credenciais de acesso ou utilizar uma Team Drive.
google-drive-ocamlfuse -l myTeamDrive

Será iniciado o processo de autorização que deve ser feito com a conta Google que terá acesso à Team Drive e aguardar que termine.
Quando terminar é necessário saber o team_drive_id da Team Drive

Team Drive ID

Para saber qual o team drive ID é necessário aceder à Team Drive através do browser e observar o URL e copiar a última parte:
https://drive.google.com/drive/u/1/folders/0XS2-_aJgHL29KfOVHAS22

De seguida é necessário abrir o ficheiro de configuração: ~/.gdfuse/myTeamDrive/config

Procurar a chave no final do ficheiro e colocar o ID:
team_drive_id=0XS2-_aJgHL29KfOVHAS22

Guardar o ficheiro e fechar.

Criar Pasta

Deve criar-se a pasta para a Team Driv:
mkdir ~/DRIVE/Team

Montar Team Drive

Para montar a Team Drive é necessário executar o comando com a label e o diretório correspondente:
google-drive-ocamlfuse -label myTeamDrive ~/DRIVE/Team

Desmontar Google Drive

Caso se pretenda terminar a utilização é possível desmontar com o comando:
fusermount -u ~/DRIVE/Team


Referências e Recursos

domingo, 10 de novembro de 2019

Recuperar ficheiros apgados num RAID com LVM

Neste caso foi utilizada uma máquinacom 2 discos de 1TBem RAID por mdadm e LVM.


- /dev/sdb e /dev/sdc - Espelhados em RAID 1 com mdadm
- /dev/md0 - Com LVM
- /dev/vg0/swap e /dev/vg0/data


- /dev/vg0/data é montado como /home

Para recuperar ficheiros apagados em /home é necessário iniciar o sistema sem montar /home.

Uma das formas é arrancar um sistema live (por exemplo, USB) e ligar um outro disco para guardar as recuperações.

Ativar RAID
- Confirmar se RAID não está montado:
cat /proc/mdstat

- Ativar RAID
mdadm --assemble --scan





- Confirmar se LVM está ativo
lvscan

- Ativar LVM com
vgchange -ay

- Depois é necessário montar a partição como readonly e com a opção noload para evitar escritas
mount -o ro,noload /dev/vg0/data /mnt/data


- Finalmente é possível utilizar o photorec para procurar e recuperar os ficheiros pretendidos.

quinta-feira, 31 de maio de 2018

Regras iptables - webserver SYN flood

Algumas regras para o iptables proteger um webserver contra alguns ataques. Por exemplo, o ataque SYN flood [0].

Descartar os pacotes SYN que não são recebidos:
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

Descartar pacotes com fragmentos:
iptables -A INPUT -f -j DROP

Descartar pacotes mal criados XMAS:
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP

Descartar pacotes nulos:
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP

Bloquear um IP externo de aceder ao servidor:
iptables -A INPUT -s IP-ADDRESS -j DROP

Bloquear um IP externo de aceder a uma porta do servidor:
iptables -A INPUT -s IP-ADDRESS -p tcp --destination-port 80 -j DROP


[0] - https://en.wikipedia.org/wiki/SYN_flood

[1] - https://www.cyberciti.biz/tips/linux-iptables-10-how-to-block-common-attack.html

[2] - https://www.cyberciti.biz/faq/how-do-i-block-an-ip-on-my-linux-server/

sábado, 10 de junho de 2017

Recuperação do arranque após instalação do Windows

Após a instalação do Microsoft Windows o grub, utilizado para o arranque do Linux, é substituído pelo bootloader do Windows.
De seguida apresentam-se os passos para voltar a colocar o grub como bootloader principal do computador.

Arranque com um LiveCD ou pen do Linux Mint (ou outro).

Acedendo à consola deve confirmar-se quais as partições, deve colocar-se a letra do disco pretendido, normalmente será 'a' ou seja, /dev/sda:

sudo fdisk -l /dev/sdX
Device     Boot Start      End  Sectors  Size Id Type
/dev/sda1  *     2048 62500863 62498816 29.8G 83 Linux
...

Deve ter-se atenção e procurar a partição linux, normalmente identificada com o código 83 (etx3, etx4 ou afins)

De seguida deve montar-se a partição para ser utilizada (neste caso seria /dev/sda1):

sudo mount /dev/sdXY /mnt

Após estar montada é possível restaurar o grub através da sua instalação no disco (neste caso /dev/sda):

sudo grub-install --root-directory=/mnt/ /dev/sdX

Esta operação deve concluir com sucesso e após isto é possível reiniciar o computador.
Ao arrancar o grub deverá ser carregado e deverá estar igual ao que estava antes da instalação do Windows.

Deve arrancar-se então com o Linux instalado e no final atualizar o grub para procurar outros sistemas operativos:

sudo update-grub

O sistema operativo Windows deverá ser reconhecido e pode reiniciar-se o computador para confirmar que já é possível escolher o Linux e o Windows.

domingo, 5 de março de 2017

Debian com OpenBox, Conky, Tint2, etc

.:.:.work.in.progress.:.:.

Colocar utilizador com permissões sudo
usermod -aG sudo <username>

Instalar software base

apt install uptimed tmux sshfs cups sshuttle curl hdparm rsync curl cabextract

Instalar ambiente gráfico

apt install openbox lightdm light-locker conky conky-all tint2 terminator gmrun gvfs gvfs-backends thunar thunar-volman thunar-archive-plugin tumbler xarchiver geany galculator arandr gsimplecal alsa-utils pulseaudio evince mousepad

Tipos de Letra

apt-get install fonts-linuxlibertine fonts-mgopen ttf-adf-* fonts-lobster* ttf-anonymous-pro ttf-bitstream-vera fonts-vollkorn fonts-tuffy fonts-tomsontalks fonts-stix mscore ttf-liberation

Calibri e outras distribuídas com Windows 7
https://wiki.debian.org/ppviewerFonts

Virtualização com Virtualbox

https://www.virtualbox.org/wiki/Linux_Downloads

Instalar Som

apt-get install alsa-utils pulseaudio volti
usermod -a -G pulse mjp

pulseaudio --start

Adicionar volti & ao autostart
Pode ser necessário alterar a configuração em ~/.config/volti/config para indicar outro card_index em vez de 0 (caso sejam detetadas diversas placas).

Instalar Desktop Software

Firefox
apt install firefox-esr

Brave Browser
 
Opera
 
Software diverso: Thunderbird, Remmina, Darktable, Gimp, VLC, Filezzila, OBS
apt install thunderbird remmina remmina-plugin-rdp darktable gimp audacious vlc filezilla obs-studio 
 
Netbeans
apt install default-jre



Instalar deb-multimedia.org

Ativar o repositório:

Instalar as chaves com
apt-get update
apt-get install deb-multimedia-keyring





apt-get install audacity

jessie
Gimp - 2.8.14
Audacity - 2.0.6
Fotowall - 0.9-11
Mediainfo-gui

apt-get install gimp audacity fotowall mediainfo-gui

jessie-backports
Darktable - 2.0.7
Inkscape - 0.92.0.3
Blender - 2.74
Calibre - 2.75.1

apt-get install -t jessie-backports darktable inkscape blender calibre

Lightworks on Debian Jessie
- Necessita da libjpeg8 que apenas existe no wheezy (old-stable!!) e no sid...
wget http://ftp.us.debian.org/debian/pool/main/libj/libjpeg8/libjpeg8_8d1-2_amd64.deb
dpkg -i libjpeg8_8d1-2_amd64.deb
dpkg -i lwks-12.6.0-amd64.deb
apt-get install -f



HACKS and TWEAKS

Executar ficheiros a partir de ~/bin.
Editar .bashrc e adicionar:
export PATH=$PATH:~/bin

Virtualbox
 sudo usermod -a -G vboxusers $USER

Instalar suporte para AMD A10 Kaveri APU
Não suportava resoluções acima de 1920x1080 (por exemplo, 2560x1080)
apt install firmware-linux-nonfree
reboot


Gestão de janelas
O ficheiro de configuração do openbox é ~/.config/openbox/rc.xml

Na secção para especificação de teclas encontra-se a seguir a:
<!-- Keybindings for running aplications -->

Aqui é possível perceber melhor o funcionamento: http://openbox.org/wiki/Help:Bindings

A sintaxe específica define uma combinação de teclas, por exemplo: W-p para Windows+p ou S-C-p para SHIFT*CTRL+p
<keybind key="my-key-combination">
  <action name="my-action">
    ...
  </action>
</keybind>

Para executar um comando a ação é:
<action name="Execute">
  <command>my-command</command>
</action>

As ações que se podem utilizar estão disponíveis em: http://openbox.org/wiki/Help:Actions

Para saber as teclas pressionadas pode dar jeito utilizar o comando xev que, a partir de um terminal lista os eventos ocorridos (rato e teclado).


[https://wiki.archlinux.org/index.php/Openbox#Window_snapping]
    <!-- 50% LEFT, CENTER, RIGHT -->
    <keybind key="W-KP_4">
      <action name="UnmaximizeFull"/>
      <action name="MoveResizeTo">
        <height>100%</height>
        <width>50%</width>
        <x>0</x>
        <y>0</y>
      </action>
    </keybind>
    <keybind key="W-KP_5">
      <action name="UnmaximizeFull"/>
      <action name="MoveResizeTo">
        <height>100%</height>
        <width>50%</width>
        <x>25%</x>
        <y>0</y>
      </action>
    </keybind>
    <keybind key="W-KP_6">
      <action name="UnmaximizeFull"/>
      <action name="MoveResizeTo">
        <height>100%</height>
        <width>50%</width>
        <x>-0</x>
        <y>0</y>
      </action>
    </keybind>
    <!-- 25% LEFT, CENTER, RIGHT -->
    <keybind key="W-KP_1">
      <action name="UnmaximizeFull"/>
      <action name="MoveResizeTo">
        <height>100%</height>
        <width>25%</width>
        <x>0</x>
        <y>0</y>
      </action>
    </keybind>
    <keybind key="W-KP_2">
      <action name="UnmaximizeFull"/>
      <action name="MoveResizeTo">
        <height>100%</height>
        <width>25%</width>
        <x>38%</x>
        <y>0</y>
      </action>
    </keybind>
    <keybind key="W-KP_3">
      <action name="UnmaximizeFull"/>
      <action name="MoveResizeTo">
        <height>100%</height>
        <width>25%</width>
        <x>-0</x>
        <y>0</y>
      </action>
    </keybind>
    <!-- 33% LEFT, CENTER, RIGHT -->
    <keybind key="W-KP_7">
      <action name="UnmaximizeFull"/>
      <action name="MoveResizeTo">
        <height>100%</height>
        <width>33%</width>
        <x>0</x>
        <y>0</y>
      </action>
    </keybind>
    <keybind key="W-KP_8">
      <action name="UnmaximizeFull"/>
      <action name="MoveResizeTo">
        <height>100%</height>
        <width>33%</width>
        <x>33%</x>
        <y>0</y>
      </action>
    </keybind>
    <keybind key="W-KP_9">
      <action name="UnmaximizeFull"/>
      <action name="MoveResizeTo">
        <height>100%</height>
        <width>33%</width>
        <x>-0</x>
        <y>0</y>
      </action>
    </keybind>
    <!-- MAXIMIZE -->
    <keybind key="W-KP_0">
      <action name="ToggleMaximizeFull"/>
    </keybind>
    <!-- RESIZE WIDTH TO SHOW CONKY -->
    <keybind key="W-KP_Divide">
      <action name="UnmaximizeFull"/>
      <action name="MoveResizeTo">
        <width>1030</width>
        <height>100%</height>
        <x>0</x>
      </action>
    </keybind>
    <!-- MOVING UP,DOWN 50% HEIGHT-->
    <keybind key="W-Up">
      <action name="MoveResizeTo">
        <height>50%</height>
      </action>
      <action name="MoveToEdge">
        <direction>north</direction>
      </action>
    </keybind>
    <keybind key="W-Down">
      <action name="MoveResizeTo">
        <height>50%</height>
      </action>
      <action name="MoveToEdge">
        <direction>south</direction>
      </action>
    </keybind>
    <!-- MOVING LEFT<>RIGHT -->
    <keybind key="W-Left">
      <action name="MoveToEdge">
        <direction>west</direction>
      </action>
    </keybind>
    <keybind key="W-Right">
      <action name="MoveToEdge">
        <direction>east</direction>
      </action>
    </keybind>
Abrir aplicações e programas
rc.xml
    <!-- LOCK SCREEN -->
    <keybind key="W-l">
      <action name="Execute">
        <command>/usr/bin/dm-tool lock</command>
      </action>
    </keybind>
    <!-- SCREENSHOT -->
    <keybind key="Print">
      <action name="Execute">
        <command>scrot -s -e 'mv $f ~/downloads/'</command>
      </action>
    </keybind>
    <keybind key="A-Print">
      <action name="Execute">
        <command>scrot -e 'mv $f ~/downloads/'</command>
      </action>
    </keybind>
    <!-- EXECUTAR -->
    <keybind key="W-r">
      <action name="Execute">
        <command>gmrun</command>
      </action>
    </keybind>
    <!-- TERMINAL -->
    <keybind key="W-t">
      <action name="Execute">
        <command>terminator</command>
      </action>
    </keybind>
    <!-- FILE EXPLORER -->
    <keybind key="W-e">
      <action name="Execute">
        <command>thunar</command>
      </action>
    </keybind>
    <!-- GEANY -->
    <keybind key="W-f">
      <action name="Execute">
        <command>geany</command>
      </action>
    </keybind>
    <!-- GALCULATOR -->
    <keybind key="W-c">
      <action name="Execute">
        <command>galculator</command>
      </action>
    </keybind>
    <!-- Audacious -->
    <keybind key="W-a">
      <action name="Execute">
        <command>audacious</command>
      </action>
    </keybind>
    <!-- Opera -->
    <keybind key="W-o">
      <action name="Execute">
        <command>opera</command>
      </action>
    </keybind>
    <keybind key="W-S-o">
      <action name="Execute">
        <command>opera --private</command>
      </action>
    </keybind>
    <!-- Firefox -->
    <keybind key="W-p">
      <action name="Execute">
        <command>firefox</command>
      </action>
    </keybind>
    <keybind key="W-S-p">
      <action name="Execute">
        <command>firefox --private-window</command>
      </action>
    </keybind>
    <!-- Chrome -->
    <keybind key="W-i">
      <action name="Execute">
        <command>google-chrome</command>
      </action>
    </keybind>
    <keybind key="W-S-i">
      <action name="Execute">
        <command>google-chrome --incognito</command>
      </action>
    </keybind>

Para carregar alterações:
openbox --reconfigure


Temas
GTK2
apt-get install gtk-theme-switch gtk2-engines gtk2-engines-murrine

Dark:
[http://www.deviantart.com/art/CathexiS-Suite-329275044]

Bloquear sessão
apt-get install light-locker
dm-tool lock

Proteção de ecrã

apt-get install xscreensaver xscreensaver-gl
Adicionar em /etc/xdg/openbox/autostart
xscreensaver -no-splash &

Para configurar executar:
xscreensaver-demo

Gsimplecal
Ao clicar no calendário do tint2 é possível abrir o calendário com o gsimplecal
tint2rc:
clock_lclick_command = gsimplecal

O ficheiro de configuração do gsimplecal:
~/.config/gsimplecal/config
show_calendar = 1
show_timezones = 0
mark_today = 1
show_week_numbers = 0
close_on_unfocus = 0
external_viewer = firefox https://www.google.com/calendar/render?action=TEMPLATE\&text=\&dates="%Y%m%d"T090000Z/"%Y%m%d"T100000Z\&details=\&location=\&sf=true\&output=xml
clock_format = %a %d %b %H:%M
force_lang = en_US.utf8
mainwindow_decorated = 0
mainwindow_keep_above = 1
mainwindow_sticky = 1
mainwindow_skip_taskbar = 1
mainwindow_resizable = 0
mainwindow_position = mouse
mainwindow_xoffset = 0
mainwindow_yoffset = 0
clock_label = UTC
clock_tz = :UTC
clock_label = Local
clock_tz =

A opção external_viewer permite definir o programa a executar quando se clica duas vezes num dia. Neste caso é aberto o browser com uma ligação para a criação de um novo evento no calendário Google na data clicada.



Hack on tint2
[https://wiki.archlinux.org/index.php/tint2]
[https://gitlab.com/o9000/tint2/blob/master/doc/tint2.md]
[https://petermolnar.net/hacking-tint2-panel-weather-cpu-temperature-and-volume-executors/]

 Outras coisas

[https://www.prahladyeri.com/blog/2016/02/minimal-debian-desktop-setup.html] - check
[https://wiki.debian.org/Openbox] - falta temas

sábado, 22 de outubro de 2016

Servidor de Impressão Raspberry Pi

Utilização de um Raspberry Pi 2B como servidor de impressão de uma impressora HP Deskjet 1510 PSC (Print Scan Copy).

A partir de uma imagem Raspbian Jessie Lite é possível configurar todo o sistema remotamente por SSH e browser.

Há muitas informações úteis na página do projeto debian [1] permitem perceber melhor o funcionamento.

Instalação e Configuração do CUPS

sudo apt-get install cups hplip

Para configuração remota via web é necessário ativar o acesso à interface web através da alteração da configuração Listen e acrescentar os endereços que têm acesso à mesma (neste caso a rede 192.168.0.*):
sudo nano /etc/cups/cupsd.conf
(...)
ServerAlias *
Listen *:631
(...)
# Restrict access to the server...
<Location />
  Order allow,deny
  Allow 192.168.0.*
</Location>

# Restrict access to the admin pages...
<Location /admin>
  Order allow,deny
  Allow 192.168.0.*
</Location>

Atualização: A diretiva ServerAlias * permite aceder ao servidor CUPS através do IP ou do nome.

Por defeito o CUPS permite a autenticação a utilizadores do SystemGroup [2] e o utilizador pi não pertence a nenhum destes grupos.

Adicionar pi ao grupo lpadmin.
sudo usermod -a -G lpadmin pi

Para confirmar os grupos do utilizador:
groups pi
pi : pi adm dialout cdrom sudo audio video plugdev games users input netdev spi i2c gpio lpadmin

Para reiniciar o serviço após alterações às configurações é necessário:
sudo systemctl restart cups.service 

A partir daqui é possível configurar uma nova impressora via browser acedendo a:
http://raspberrypi:631

Ao adicionar uma impressora é reconhecida a impressora e de seguida é necessário escolher o driver da lista muito numerosa, neste caso:
HP PSC 1510 Series, hpcups 3.14.6

É necessário ativar a partilha da impressora aquando da instalação ou então mais tarde na configuração CUPS (Share printers connected to this system)

A partir daqui qualquer máquina na rede com o CUPS (normalmente qualquer Linux com sistema de impressão, por exemplo, ubuntu, Mint, etc) vai ver a impressora sem ser necessário qualquer instalação.

Resolução de Problemas

1. Ao aceder através do nome do servidor na porta 631 dá erro Bad Request
É necessário utilizar a diretiva ServerAlias *, que permite aceder ao servidor CUPS através do IP ou do nome.

2. Quando se manda imprimir o trabalho não é enviado
Confirmar se a impressora não está parada ou com erro através da página de administração: https://raspberrypi:631/printers

3. Debug
Pode ajudar alterar a diretiva LogLevel de warn para debug de forma a ter mais detalhes nos logs:
sudo less /var/log/cups/error_log

Referências

terça-feira, 27 de outubro de 2015

Proxmox/OpenVZ contentor sem permissões de escrita em /dev/null

Algumas VPS OpenVZ ao reiniciarem ficavam com permissões erradas (rw- --- ---, ou seja, 600) em alguns devices:
/dev/null
/dev/full
/dev/zero
/dev/random
/dev/urandom

A partir daqui [1] foi possível obter uma regra para o udev aplicar sobre estes devices e permitir que a cada arranque as permissões sejam as corretas.

Como neste caso o ficheiro não existe é necessário criá-lo e adicionar o conteúdo abaixo.
# nano /etc/udev/rules.d/50-fix-permission.rules
SUBSYSTEM=="mem", KERNEL=="null|zero|full|random|urandom", MODE="0666"

Guardar com CTRL + X e Y

[1] - https://bbs.archlinux.org/viewtopic.php?pid=1123209#p1123209

segunda-feira, 6 de outubro de 2014

Bash: hosts ativos


arp-scan --interface=eth0 192.168.0.0/24 | grep 192. | sort -n | uniq -w 15 | wc -l

  • Listar máquinas ativas
arp-scan --interface=eth0 192.168.0.0/24
  • Apresentar apenas as linhas que contenham "192."
 grep 192.
  • Ordenar
 sort -n
  • Apresentar apenas linhas únicas (sem IP repetido => primeiros 15 caracteres únicos)
uniq -w 15
  •  Contar as linhas (seja IP's únicos)
wc -l