Dicas Linux
Dicas para Linux

Como descobrir (listar) o UUID e LABEL de todas as partições?
Link: https://bistrunka.net/2012/09/22/como-descobrir-listar-o-uuid-e-label-de-todas-as-particoes/ 

  ( How to find out (list) the UUID and LABEL all the partitions? ) 

 Para listar o código UUID (universally unique identifier) e LABEL (rótulo/nome) de todas as partições de todos os discos do computador com um único comando basta utilizar, como root, o comando blkid: 

 sudo blkid 

 Olhe a saída no meu computador: 

 zumm@destino:~$ sudo blkid /dev/sda1: LABEL=”Ubuntu-12.10″ UUID=”98e6d91d-9b8b-46e5-8429-e492044cbbd5″ TYPE=”ext4″ /dev/sda2: LABEL=”Vídeos” UUID=”457fce87-b36d-4364-971a-afaa11e39357″ TYPE=”ext4″ /dev/sda3: LABEL=”Backup” UUID=”ae9f9aeb-ae10-4e70-b680-396e0dd1c320″ TYPE=”ext4″ /dev/sda5: UUID=”c526a707-a8bb-431a-a2ea-398bb59f8146″ TYPE=”swap” /dev/sda6: LABEL=”AMD64″ UUID=”a1d9c813-b4e7-4331-b4eb-6a08e44938e8″ TYPE=”ext4″ /dev/sda7: LABEL=”Gentoo” UUID=”9daf9b72-ec06-4175-b484-01ff1add6a37″ TYPE=”ext4″ /dev/sda8: LABEL=”Mint” UUID=”417d751e-faf9-4abc-ac43-271d47c973c6″ TYPE=”ext4″ /dev/sdb1: LABEL=”Ubuntu-11.04″ UUID=”0a3b9f72-bbd6-4e7f-bf11-6ef2043cf973″ TYPE=”ext4″ /dev/sdb2: LABEL=”Dados” UUID=”9100787c-03bf-4e22-8080-bd9a586fa2fe” TYPE=”ext3″ /dev/sdb3: LABEL=”Músicas” UUID=”4d759fd5-5ab2-4b92-b6b6-c015507672ce” TYPE=”ext3″ /dev/sdb4: UUID=”bdf9c723-c739-4e53-8810-a4e98c9ea8f5″ TYPE=”swap” /dev/sdc1: LABEL=”Debian” UUID=”09aefbca-ddea-4068-be78-380fd959c658″ TYPE=”ext4″ /dev/sdc2: LABEL=”Arch” UUID=”1e2b868a-c634-4f3b-81b6-0e22e33552b3″ TYPE=”ext4″ /dev/sdc5: UUID=”d6609dbc-1720-4e3d-b316-730fcd87d6b4″ TYPE=”swap” /dev/sdc6: LABEL=”Music” UUID=”414d9df7-1cdd-47e5-bda3-523b0a1f0a53″ TYPE=”ext4″ /dev/sdc7: LABEL=”Video” UUID=”356f8f81-8569-46ef-9fbe-fd8837bb6538″ TYPE=”ext4″ 

 Outros comandos: 

 Para listar o UUID: 

 zumm@destino:~$  ls -l /dev/disk/by-uuid 

 total 0 lrwxrwxrwx 1 root root 10 2012-09-21 20:06 0a3b9f72-bbd6-4e7f-bf11-6ef2043cf973 -> ../../sdb1 lrwxrwxrwx 1 root root 10 2012-09-21 20:05 417d751e-faf9-4abc-ac43-271d47c973c6 -> ../../sda8 lrwxrwxrwx 1 root root 10 2012-09-21 20:06 457fce87-b36d-4364-971a-afaa11e39357 -> ../../sda2 lrwxrwxrwx 1 root root 10 2012-09-21 20:06 4d759fd5-5ab2-4b92-b6b6-c015507672ce -> ../../sdb3 lrwxrwxrwx 1 root root 10 2012-09-21 20:06 9100787c-03bf-4e22-8080-bd9a586fa2fe -> ../../sdb2 lrwxrwxrwx 1 root root 10 2012-09-21 20:05 98e6d91d-9b8b-46e5-8429-e492044cbbd5 -> ../../sda1 lrwxrwxrwx 1 root root 10 2012-09-21 20:05 9daf9b72-ec06-4175-b484-01ff1add6a37 -> ../../sda7 lrwxrwxrwx 1 root root 10 2012-09-21 20:05 a1d9c813-b4e7-4331-b4eb-6a08e44938e8 -> ../../sda6 lrwxrwxrwx 1 root root 10 2012-09-21 20:06 ae9f9aeb-ae10-4e70-b680-396e0dd1c320 -> ../../sda3 lrwxrwxrwx 1 root root 10 2012-09-21 20:05 bdf9c723-c739-4e53-8810-a4e98c9ea8f5 -> ../../sdb4 lrwxrwxrwx 1 root root 10 2012-09-21 20:05 c526a707-a8bb-431a-a2ea-398bb59f8146 -> ../../sda5 

 Para listar o LABEL: 

 zumm@destino:~$ ls -l /dev/disk/by-label 

 total 0 drwxr-xr-x 2 root root 220 2012-09-22 16:37 . drwxr-xr-x 6 root root 120 2012-09-21 20:05 .. lrwxrwxrwx 1 root root 10 2012-09-21 20:05 AMD64 -> ../../sda6 lrwxrwxrwx 1 root root 10 2012-09-21 20:06 Backup -> ../../sda3 lrwxrwxrwx 1 root root 10 2012-09-21 20:06 Dados -> ../../sdb2 lrwxrwxrwx 1 root root 10 2012-09-21 20:05 Livre -> ../../sda7 lrwxrwxrwx 1 root root 10 2012-09-21 20:05 Mint -> ../../sda8 lrwxrwxrwx 1 root root 10 2012-09-21 20:06 Músicas -> ../../sdb3 lrwxrwxrwx 1 root root 10 2012-09-21 20:06 Ubuntu-11.04 -> ../../sdb1 lrwxrwxrwx 1 root root 10 2012-09-21 20:05 Ubuntu-12.10 -> ../../sda1 lrwxrwxrwx 1 root root 10 2012-09-21 20:06 Vídeos -> ../../sda2   

 Listando os UUID’s de apenas um disco: 

 zumm@destino:~$ blkid /dev/sda[1-9] /dev/sda1: LABEL=”Ubuntu-12.10″ UUID=”98e6d91d-9b8b-46e5-8429-e492044cbbd5″ TYPE=”ext4″ /dev/sda2: LABEL=”Vídeos” UUID=”457fce87-b36d-4364-971a-afaa11e39357″ TYPE=”ext4″ /dev/sda3: LABEL=”Backup” UUID=”ae9f9aeb-ae10-4e70-b680-396e0dd1c320″ TYPE=”ext4″ /dev/sda5: UUID=”c526a707-a8bb-431a-a2ea-398bb59f8146″ TYPE=”swap” /dev/sda6: LABEL=”AMD64″ UUID=”a1d9c813-b4e7-4331-b4eb-6a08e44938e8″ TYPE=”ext4″ /dev/sda7: LABEL=”Gentoo” UUID=”9daf9b72-ec06-4175-b484-01ff1add6a37″ TYPE=”ext4″ /dev/sda8: LABEL=”Mint” UUID=”417d751e-faf9-4abc-ac43-271d47c973c6″ TYPE=”ext4″ 

 Listando organizado por colunas 

 

 

 

 zumm@destino:~$ sudo blkid -o list -c /dev/null 

 Obtendo todas as informações de uma partição com o TUNE2FS 

 zumm@destino:~$ sudo tune2fs /dev/sda2 

 tune2fs 1.41.14 (22-Dec-2010) Filesystem volume name: Vídeos Last mounted on: /media/Vídeos Filesystem UUID: 457fce87-b36d-4364-971a-afaa11e39357 Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize Filesystem flags: signed_directory_hash Default mount options: (none) Filesystem state: clean Errors behavior: Continue Filesystem OS type: Linux Inode count: 59375616 Block count: 237497855 Reserved block count: 11874892 Free blocks: 175586011 Free inodes: 59374910 First block: 0 Block size: 4096 Fragment size: 4096 Reserved GDT blocks: 967 Blocks per group: 32768 Fragments per group: 32768 Inodes per group: 8192 Inode blocks per group: 512 RAID stride: 32750 Flex block group size: 16 Filesystem created: Tue Nov 1 00:13:51 2011 Last mount time: Fri Sep 21 20:06:02 2012 Last write time: Fri Sep 21 20:06:02 2012 Mount count: 16 Maximum mount count: 32 Last checked: Mon Sep 17 08:18:46 2012 Check interval: 15552000 (6 months) Next check after: Sat Mar 16 08:18:46 2013 Lifetime writes: 251 GB Reserved blocks uid: 0 (user root) Reserved blocks gid: 0 (group root) First inode: 11 Inode size: 256 Required extra isize: 28 Desired extra isize: 28 Journal inode: 8 Default directory hash: half_md4 Directory Hash Seed: d714b716-999e-4eb1-b4b8-a27ae6964d3b Journal backup: inode blocks zumm@destino:~$ 

 Já dá para brincar um pouquinho.

Introduction to fstab
Link: https://help.ubuntu.com/community/Fstab 

 The configuration file  /etc/fstab  contains the necessary information to automate the process of mounting partitions. In a nutshell, mounting is the process where a raw (physical) partition is prepared for access and assigned a location on the file system tree (or mount point). 

 

 In general fstab is used for internal devices, CD/DVD devices, and network shares (samba/nfs/sshfs). Removable devices such as flash drives *can* be added to fstab, but are typically mounted by gnome-volume-manager and are beyond the scope of this document. 

 Options for mount and fstab are similar. 

 Partitions listed in fstab can be configured to automatically mount during the boot process. 

 If a device/partition is not listed in fstab ONLY ROOT may mount the device/partition. 

 Users may mount a device/partition if the device is in fstab with the proper options. 

 

  For usage with network shares, see  SettingUpNFSHowTo  ,  SettingUpSamba  and  SSHFS . 

 Fstab File Configuration 

 

  The syntax of a fstab entry is : 

 [Device] [Mount Point] [File System Type] [Options] [Dump] [Pass] 

 

 

 

 

 

 

 fields 

 

 

 description 

 

 

 

 

 <device> 

 

 

 The device/partition (by /dev location or UUID) that contain a file system. 

 

 

 

 

 <mount point> 

 

 

 The directory on your root file system (aka mount point) from which it will be possible to access the content of the device/partition (note: swap has no mount point). Mount points should not have spaces in the names. 

 

 

 

 

 <file system type> 

 

 

 Type of file system (see  LinuxFilesystemsExplained ). 

 

 

 

 

 <options> 

 

 

 Mount options of access to the device/partition (see the man page for  mount ). 

 

 

 

 

 <dump> 

 

 

 Enable or disable backing up of the device/partition (the command  dump ). This field is usually set to 0, which disables it. 

 

 

 

 

 <pass num> 

 

 

 Controls the order in which  fsck  checks the device/partition for errors at boot time. The root device should be 1. Other partitions should be 2, or 0 to disable checking. 

 

 

 

 

 

 

 Please refer to the examples section for sample entries. We have provided you some detailed explanations of each field: 

 Device 

 

 By default, Ubuntu now uses  UUID  to identify partitions. 

 UUID=xxx.yyy.zzz 

 To list your devices by UUID use blkid 

 

 sudo blkid 

 

 Alternative ways to refer to partitions: 

 

 Label : LABEL=label 

 Network ID 

 

 Samba : //server/share 

 NFS : server:/share 

 SSHFS : sshfs#user@server:/share 

 

 

 Device : /dev/sdxy (not recommended) 

 

 Mount point 

 

 A mount point is a location on your directory tree to mount the partition. The default location is /media although you may use alternate locations such as /mnt or your home directory. 

 You may use any name you wish for the mount point, but you must create the mount point before you mount the partition. 

 For example : /media/windows 

 

 sudo mkdir /media/windows 

 

 File System Type 

 

 You may either use auto or specify a file system. Auto will attempt to automatically detect the file system of the target file system and in general works well. In general auto is used for removable devices and a specific file system or network protocol for network shares. 

 Examples: 

 

 auto 

 vfat - used for FAT partitions. 

 ntfs, ntfs-3g - used for ntfs partitions. 

 ext4, ext3, ext2, jfs, reiserfs, etc. 

 udf,iso9660 - for CD/DVD. 

 swap. 

 

 Options 

 

 Options are dependent on the file system. 

 You may use "defaults" here and some typical options may include : 

 

 

 Ubuntu 8.04  and later uses  relatime  as default for linux native file systems. You can find a discussion of relatime here :  http://lwn.net/Articles/244829 . This relates to when and how often the last access time of the current version of a file is updated, i.e. when it was last read. 

 

 defaults = rw, suid, dev, exec, auto, nouser, and async. 

 ntfs/vfat = permissions are set at the time of mounting the partition with umask, dmask, and fmask and can not be changed with commands such as chown or chmod. 

 

 

 I advise  dmask=027,fmask=137  (using umask=000 will cause all your files to be executable). More permissive options would be  dmask=000,fmask=111 . 

 

 

 

 

 For mounting samba shares you can specify a username and password, or better a  credentials file . The credentials file contains should be owned by root.root with permissions = 0400 . 

 

 

 Common options : 

 

 sync/async - All I/O to the file system should be done (a)synchronously. 

 auto - The filesystem can be mounted automatically (at bootup, or when mount is passed the -a option). This is really unnecessary as this is the default action of mount -a anyway. 

 noauto - The filesystem will NOT be automatically mounted at startup, or when mount passed -a. You must explicitly mount the filesystem. 

 dev/nodev - Interpret/Do not interpret character or block special devices on the file system. 

 exec / noexec - Permit/Prevent the execution of binaries from the filesystem. 

 suid/nosuid - Permit/Block the operation of suid, and sgid bits. 

 ro - Mount read-only. 

 rw - Mount read-write. 

 user - Permit any user to mount the filesystem. This automatically implies noexec, nosuid,nodev unless overridden. 

 nouser - Only permit root to mount the filesystem. This is also a default setting. 

 defaults - Use default settings. Equivalent to rw, suid, dev, exec, auto, nouser, async. 

 _netdev - this is a network device, mount it after bringing up the network. Only valid with fstype nfs. 

 

 For specific options with specific file systems see: 

 

 

 man mount 

 

 

 Dump 

 

 This field sets whether the backup utility dump will backup file system. If set to "0" file system ignored, "1" file system is backed up. 

 Dump is seldom used and if in doubt use 0. 

   

 Pass (fsck order) 

 

 Fsck order is to tell fsck what order to check the file systems, if set to "0" file system is ignored. 

 Often a source of confusion, there are only 3 options : 

 

 0 == do not check. 

 1 == check this partition first. 

 2 == check this partition(s) next 

 

 In practice, use "1" for your root partition, / and 2 for the rest. All partitions marked with a "2" are checked in sequence and you do not need to specify an order. 

 Use "0" to disable checking the file system at boot or for network shares. 

 You may also "tune" or set the frequency of file checks (default is every 30 mounts) but in general these checks are designed to maintain the integrity of your file system and thus you should strongly consider keeping the default settings. 

 Examples 

 

  The contents of the file will look similar to following: 

 # /etc/fstab: static file system information.

#

# <file system> <mount point> <type> <options> <dump> <pass>

proc /proc proc defaults 0 0

# /dev/sda5

UUID=be35a709-c787-4198-a903-d5fdc80ab2f8 / ext3 relatime,errors=remount-ro 0 1

# /dev/sda6

UUID=cee15eca-5b2e-48ad-9735-eae5ac14bc90 none swap sw 0 0

/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto,exec,utf8 0 0 

 

 NOTE : These network share examples (samba, nfs, and sshfs) assume you have already set up the appropriate server. 

 

 # FAT ~ Linux calls FAT file systems vfat)

# /dev/hda1

UUID=12102C02102CEB83 /media/windows vfat auto,users,uid=1000,gid=100,dmask=027,fmask=137,utf8 0 0

# NTFS ~ Use ntfs-3g for write access (rw) 

# /dev/hda1

UUID=12102C02102CEB83 /media/windows ntfs-3g auto,users,uid=1000,gid=100,dmask=027,fmask=137,utf8 0 0

# Zip Drives ~ Linux recognizes ZIP drives as sdx'''4'''

# Separate Home

# /dev/sda7

UUID=413eee0c-61ff-4cb7-a299-89d12b075093 /home ext3 nodev,nosuid,relatime 0 2

# Data partition

# /dev/sda8

UUID=3f8c5321-7181-40b3-a867-9c04a6cd5f2f /media/data ext3 relatime,noexec 0 2

# Samba

//server/share /media/samba cifs user=user,uid=1000,gid=100 0 0

# "Server" = Samba server (by IP or name if you have an entry for the server in your hosts file

# "share" = name of the shared directory

# "user" = your samba user

# This set up will ask for a password when mounting the samba share. If you do not want to enter a password, use a credentials file.

# replace "user=user" with "credentials=/etc/samba/credentials" In the credentials file put two lines

# username=user

# password=password

# make the file owned by root and ro by root (sudo chown root.root /etc/samba/credentials && sudo chmod 400 /etc/samba/credentials)

# NFS

Server:/share /media/nfs nfs rsize=8192 and wsize=8192,noexec,nosuid

# "Server" = Samba server (by IP or name if you have an entry for the server in your hosts file

# "share" = name of the shared directory

#SSHFS

sshfs#user@server:/share fuse user,allow_other 0 0

# "Server" = Samba server (by IP or name if you have an entry for the server in your hosts file

# "share" = name of the shared directory 

 

 File System Specific Examples 

 

  Here are a couple of basic examples for different file system types. I will use /dev/sdb1 or /dev/hda2 for simplicity, but remember that any /dev location, UUID=<some_id>, or LABEL=<some_label> can work. 

 Extended file systems (ext) 

 

 Specifically, these are the  ext2 ,  ext3 , and  ext4  filesystems that are common as root filesystems in Linux. The main difference between ext2 and ext3 is that ext3 has journaling which helps protect it from errors when the system crashes. The more modern ext4 supports larger volumes along with other improvements, and is backward compatible with ext3. 

 A root filesystem: 

 UUID=30fcb748-ad1e-4228-af2f-951e8e7b56df / ext3 defaults,errors=remount-ro,noatime 0 1 

 

 A non-root file system, ext2: 

 /dev/sdb1 /media/disk2 ext2 defaults 0 2 

 

 File Allocation Table (FAT) 

 

 Specifically,  fat16 and fat32 , which are common for USB flash drives and flash cards for cameras and other devices. 

 /dev/hda2 /media/data1 vfat defaults,user,exec,uid=1000,gid=100,umask=000 0 0 

 

 

 /dev/sdb1 /media/data2 vfat defaults,user,dmask=027,fmask=137 0 0 

 

 New Technology File System (NTFS) 

 

 NTFS  is typically used for a Windows partition. 

 /dev/hda2 /media/windows ntfs-3g defaults,locale=en_US.utf8 0 0 

 

 For a list of locales available on your system, run 

 

 

 locale -a 

 

 

 Hierarchical File System (HFS) 

 

 HFS , or more commonly,  HFS+ , are filesystems generally used by Apple computers. 

 For Read/Write mounting: 

 /dev/sdb2 /media/Macintosh_HD hfsplus rw,exec,auto,users 0 0 

 

 Note: if you want to write data on this partition, you  must  disable the journalization of this partition with  diskutil  under Mac OS. 

 For Read only: 

 /dev/sda2 /media/Machintosh_HD hfsplus ro,defaults 0 2 

 

 Note: if you want to have access to your files on Ubuntu, you must change the permission of the folders and contained files you want to access by doing in the apple terminal: 

 sudo chmod -R 755 Folder 

 

 "Staff" group should have appeared in this folder's info. You can do this on Music and Movies to access these files from Ubuntu. 

 Editing fstab 

 

  Please, before you edit system files,  make a backup . The -B flag with nano will make a backup automatically. 

 To edit the file in Ubuntu, run: 

 gksu gedit /etc/fstab 

 

 To edit the file in Kubuntu, run: 

 kdesu kate /etc/fstab 

 

 To edit the file directly in terminal, run: 

 sudo nano -Bw /etc/fstab 

 

 

 -B = Backup origional fstab to /etc/fstab~ . 

 -w = disable wrap of long lines. 

 

 Alternate: 

 sudo -e /etc/fstab 

 

 Useful Commands 

 

  To view the contents of  /etc/fstab , run the following terminal command: 

 cat /etc/fstab 

 

 To get a list of all the UUIDs, use one of the following two commands: 

 sudo blkid

ls -l /dev/disk/by-uuid 

 

 To list the drives and relevant partitions that are attached to your system, run: 

 sudo fdisk -l 

 

 To mount all file systems in  /etc/fstab , run: 

 sudo mount -a 

 

 Remember that the mount point must already exist, otherwise the entry will not mount on the filesystem. To create a new mount point, use root privileges to create the mount point. Here is the generalization and an example: 

 sudo mkdir /path/to/mountpoint

sudo mkdir /media/disk2 

 

   

 Other Resources 

 

  Here are some more links for your convenience: 

 

 

 UsingUUID 

 

 

 How to fstab  (from the Ubuntu Forums) 

 

 

 http://en.wikipedia.org/wiki/Fstab 

 

 

 SettingUpNFSHowTo 

 

 

 SettingUpSamba 

 

 

 LinuxFilesystemsExplained 

 

 

 AutomaticallyMountPartitions 

 

 

 HowtoPartition

EXECUTAR COMANDOS AO EFETUAR LOGIN OU LOGOUT NO LINUX
Link: https://www.vivaolinux.com.br/dica/Executar-comandos-ao-efetuar-login-ou-logout-no-Linux#google_vignette 

 Para que um comando seja executado quando o usuário efetua LOGIN (iniciar uma sessão) ou LOGOUT (finalizar a sessão), insira o seu comando nos respectivos arquivos que devem estar localizados no HOME de cada usuário: 

 

 .bash_login 

 .bash_logout 

 

 Obs.: Se estes arquivos não existirem, você deve criá-los. Exemplos: 1) Exibir uma mensagem quando o usuário efetua LOGIN (adicionar em .bash_login): echo "Bem-vindo(a) ao Linux !" 

 2) Limpar a tela quando o usuário efetua LOGOUT (adicionar em .bash_logout): clear 

 Para que os novos usuários herdem estes arquivos de configuração, copie-os para a pasta /etc/skel. Assim sempre que um novo usuário for criado, serão copiados os arquivos .bash_login e .bash_logout para sua pasta HOME. Espero que seja útil!

O comando AWK com if, else e outras opções
Link: https://blog.ironlinux.com.br/o-comando-awk/ 

 

 

 Assim como o  SED  , o AWK é uma ferramenta para manipulação de texto. No entanto, o AWK também é considerado uma linguagem de programação. Com ele é possível pesquisar palavras num arquivo, identificar padrões, realizar substituições e muito mais! Além disso, o AWK suporta expressões regulares, o que permite realizar matches de padrões complexos. 

 Output de exemplo 

 Antes de tudo, para realizarmos as operações/exemplos com o AWK, vamos utilizar a saída do comando  ps u : 

 Copiar 

 

 

 ps u

 

 

 

 

 1 | Utilizações básicas 

 1.1 | Printar a primeira coluna 

 Para apresentar apena a primeira coluna é possível utilizar o comando abaixo. A primeira coluna é representada por  $1 : 

 Copiar 

 

 

 ps u | awk '{print $1}'

 

 

 

 

 1.2 | Printar múltiplas colunas 

 É possível trazer múltiplas colunas utilizando o comando abaixo. OBS: A vírgula neste exemplo representará um espaço comum na saída final: 

 Copiar 

 

 

 ps u | awk '{print $1,$2,$3}'

 

 

 

 

 1.3 | Printar múltiplas colunas separadas por Tab 

 Utilizando  "\t"  é possível separar as colunas com Tab: 

 Copiar 

 

 

 ps u | awk '{print $1 "\t" $2 "\t" $3}'

 

 

 

 

 1.4 | Printar o último elemento 

 Utilizando  $NF  é possível trazer o último elemento (neste caso é a coluna COMMAND): 

 Copiar 

 

 

 ps u | awk '{print $NF}'

 

 

 

 

 1.5 | Ignorar a primeira linha 

 É comum precisar remover a primeira linha de um arquivo para depois trabalhar com os dados. Para fazer isso, basta utilizar o comando abaixo: 

 Copiar 

 

 

 ps u | awk 'NR!=1'

 

 

 

 

 1.6 | Substituir texto 

 Para substituir um texto, podemos utilizar a função  sub() , conforme o exemplo abaixo, que substitui a string “ kali ” por “ outro-usuario ”: 

 Copiar 

 

 

 ps u | awk -e 'sub(/kali/, "outro-usuario")'

 

 

 

 

 OBS: A função  sub()  substitui apenas a primeira ocorrência, uma vez por linha. Caso queira substituir mais de uma ocorrência, utilize a função  gsub() . 

 2 | Utilizando um outro delimitador 

 Por padrão, o delimitador do AWK é o espaço (ou tab). No entanto, em alguns casos, você precisará indicar um outro delimitador (como por exemplo  vírgula  ou  ponto e vírgula ). Desta forma, no exemplo abaixo, estamos utilizando  ;  como delimitador e printando o segundo elemento: 

 Copiar 

 

 

 echo 'oi;tudo;certo' | awk -F ';' '{print $2}'

 

 

 

 

 3 | Condicionais 

 3.1 | AWK com if 

 Para exemplificar o uso de condicionais (if) vamos utilizar o arquivo  notas.txt  que possui o seguinte conteúdo: 

 

 Por exemplo, para printar a linha inteira se a primeira coluna for a string  Iron : 

 Copiar 

 

 

 awk '{ if ($1 == "Iron") print $0 }' notas.txt

 

 

 

 

 Por exemplo, para printar a nota do aluno  Iron  em uma frase: 

 Copiar 

 

 

 awk '{ if ($1 == "Iron") print "A nota do Aluno", $1, "foi", $2}' notas.txt

 

 

 

 

 3.2 | AWK com if/else 

 No exemplo abaixo estamos utilizando if/else para determinar quais alunos reprovaram ou passaram (com nota maior que 5). Também estamos utilizando  NR!=1  para ignorar a primeira linha: 

 Copiar 

 

 

 awk 'NR!=1 {if ($2 >=5 ) print $0,"=>","Passou!"; else print $0,"=>","Reprovou!"}' notas.txt

 

 

 

 

 3.3 | Cheatsheet de condicionais 

 

 

 

 

 Condicionais 

 Descrição 

 

 

 

 

 if ($5 >= 10) 

 Se a quinta coluna for maior ou igual a 10 

 

 

 if ($3 == 10) 

 Se a terceira coluna for igual a 10 

 

 

 if ($1 == “Linux”) 

 Se a primeira coluna for igual a string  Linux 

 

 

 if ($1 == “Linux” 

   

 

 

 if ($1 ==“Linux” && $2 > 5) 

 Se a primeira coluna for igual a string  Linux   e  a segunda coluna for  maior  que  5 

 

 

 

 

 4 | Utilizando REGEX 

 4.1 | Exemplos com REGEX 

 Na regex abaixo, estamos printando a linha inteira caso a segunda coluna se inicie com o número 1: 

 Copiar 

 

 

 ps u | awk -e '$2 ~ /^1/ {print $0}'

 

 

 

 

 Na regex abaixo estamos printando todas as linhas cuja coluna 2  não  comecem com o número 1: 

 Copiar 

 

 

 ps u | awk -e '$2 !~ /^1/ {print $0}'

 

 

 

 

 4.2 | Cheatsheet de REGEX 

 

 

 

 

 Regex 

 Descrição 

 

 

 

 

 [mr] 

 Letras** m** ou  r 

 

 

 [a-z] 

 Qualquer letra de  a  à  z 

 

 

 [a-zA-Z] 

 Qualquer letra de  A  à

 Z  (maiúsculo ou minúsculo) 

 

 

 [A-Z0-9]{5} 

 5 caracteres, podendo ser qualquer letra de A à Z ou números de 0 a 9 

 

 

 

 

 5 | Alguns outros usos interessantes 

 5.1 | Pegar linhas entre dois padrões 

 Vamos utilizar o arquivo  padrao.txt  abaixo para realizar as operações: 

 

 Caso você queira printar, todas as linhas entre “ padrao1 ” e “ padrao2 ”: 

 Copiar 

 

 

 awk '/padrao1/{flag=1;next}/padrao2/{flag=0}flag' padrao.txt

 

 

 

 

 Caso queira que “ padrao1 ” e “ padrao2 ” também seja printado: 

 Copiar 

 

 

 awk '/padrao1/{a=1}/padrao2/{print;a=0}a' padrao.txt

 

 

 

 

 5.2 | Adicionar um prefixo nas linhas 

 Para adicionar um prefixo nas linhas pode-se utilizar a função  gensub() , veja o exemplo abaixo, onde adicionamos a palavra “Prefixos” em todas as linhas que comecem com caracteres alfanuméricos: 

 Copiar 

 

 

 awk -e ' { print gensub(/^[a-zA-Z0-9]*/, "Prefixos &",1) }' notas.txt

 

 

 

 

 Por fim, agradecemos a leitura e esperamos que este post tenha te ajudado de alguma maneira! Caso tenha alguma dúvida, entre em contato conosco pelo  Telegram  ,  Facebook  ou  Instagram  ! Veja mais posts no  IronLinux  ! 

 Tags: 

 

 

 

 Awk 

 Comandos linux 

 Linux 

 Manipulação de texto 

 Sed 

 

 

 

 

 

 

 

 

 

 

 

 Posts relacionados 

 

 

 

 

 

 

 

 Redirecionar a saída padrão e de erros 

 

 

 

 

 

 Vinicius Souza 

   Linux 

 

 

 

 

 

 Quando é executado um comando ou algum script no Linux é possível redirecionar a saída padrão e de erros para não ser printado em tela ou que seja direcionado à algum lugar especifico. 

 

 

 

 Ler post completo 

 

 

 

 

 

 

 O comando SED no Linux 

 

 

 

 

 

 Vinicius Souza 

   Linux 

 

 

 

 

 

 O comando SED é uma ótima ferramenta de edição de arquivos ou de formatação de resultados de comandos, com ele você pode pesquisar, localizar e substituir, inserir ou excluir palavras, números e etc. 

 

 

 

 Ler post completo 

 

 

 

 

 

 

 Estressando MEM, DISCO e CPU com Stress-ng [Debian9] 

 

 

 

 

 

 Vinicius Souza 

   Linux 

 

 

 

 

 

 O STRESS-NG Com a ferramenta Stress-ng podemos literalmente realizar o Stress de alguns recursos do seu servidor, sendo eles: Cpu, memória e disco. 

 

 

 

 Ler post completo

Verificar vida útil de um hard disk
Link: https://www.hdsentinel.com/hard_disk_sentinel_linux.php 

 

 

 

 

 Hard Disk Sentinel Linux Edition (FREE) 

 

 

 

 

 

 By using Hard Disk Sentinel Linux console edition, it is possible to examine the temperature and health information (and more) of  IDE, S-ATA (SATA II also), SCSI and  USB  hard disks connected to motherboard or external controller cards.  The user must be root to use this software or start it with sudo. 

 To display hard disk / SSD status in a graphical interface, download  Hard Disk Sentinel Linux GUI (Graphical User Interface)  package. Thanks for Gregory25! 

 To simplify starting Hard Disk Sentinel Linux Edition, it is possible to use one of the  Linux Desktop Installers  for the actual Linux distribution which allows starting directly from the desktop without the need of starting manually from a console. Thanks for Marc Sayer for these packages! 

 To receive daily status reports, please check the  HDSentinel_EmailUtil.zip  package. Thanks for Raul del Cid Lopez for this script! 

 

 

 List of features 

 

 display hard disk / solid state disk information on the terminal 

 create comprehensive report about the disk system, including both hard disk and SSD specific features (for example, media rotation rate, TRIM command, etc.) 

 display and manage acoustic setting of hard disks (on supported USB disks also) 

 offers outputs for both users and scripts/other applications to process 

 

 The following information are displayed: 

 

 detected hard disk number and device name (for example /dev/sda) 

 size, model ID, serial number, revision and interface of all detected hard disks 

 temperature, health and performance values 

 power on time (days, hour, minutes - if supported) Note : this is for informational purposes only, the value displayed under Windows (after some minutes of testing) may be more accurate 

 acoustic management settings (if supported and  -aam  or  -setaam  option is used 

 

 Command line switches 

 The switches are NOT case sensitive. Upper and lower case can be used to specify them. 

 

 -h  - displays help and usage information 

 -r [report file]  - automatically save report to filename (default: report.txt) 

 -html  - use with -r to save HTML format report (-html -r report.html) 

 -mht  - use with -r to save MHT format report (-mht -r report.mht) 

 -autosd  - detect industrial SD card type and save flag file (see  How to: monitor (micro) SD card health and status  for more details) 

 -dev /dev/sdX  - detect and report only the specified device without accessing others 

 -devs d1,d2  - detect (comma separated) devices in addition to default ones eg. /dev/sda,/dev/sdb,/dev/sdc 

 -onlydevs d1,d2  - detect (comma separated) devices only eg. /dev/sda,/dev/sdb,/dev/sdc 

 -nodevs d1,d2  - exclude detection of (comma separated) devices eg. /dev/sda,/dev/sdb,/dev/sdc 

 -dump  - dump report to stdout (can be used with -xml to dump XML output instead of text) 

 -xml  - create and save XML report instead of TXT 

 -solid  - solid output (drive, tempC, health%, power on hours, model, S/N, size) 

 -verbose  - detailed detection information and save temporary files (only for debug purposes) 

 -aam  - display acoustic management settings (current and recommended level) 

 -setaam drive_num|ALL level(hex)80-FE|QUIET|LOUD  - set acoustic level on drive 0..n (or all) 80 or QUIET is the lowest (most silent) setting, FE or LOUD is the highest (fastest) setting For example:  hdsentinel -setaam 0 loud  - Configures drive 0 to fastest (loud) setting. Same as  hdsentinel -setaam 0 FE 

 

 Please send saved XML or TXT reports, questions or ideas to  info@hdsentinel.com  to help improving this tool. 

 License 

 Hard Disk Sentinel Linux edition is  FREE . You can freely distribute and use it to analyse hard disk status. However, if you like this tool and would like to keep it updated, please support further development by registering the Windows version of the software. 

 Usage of Hard Disk Sentinel Linux version 

 After downloading the file below, please follow these steps to use it: 

 

 double click to open and decompress it to any folder 

 open a terminal window and navigate to the folder 

 change file permissions to make it executable by using  chmod 755 HDSentinel 

 launch it by entering  sudo ./HDSentinel [options] sudo  is not required if you logged in as "root". 

 

   

 Examples 

 Optimize complete system for silence:  hdsentinel -setaam all quiet 

 Optimize complete system for high performance (but louder disk access):  hdsentinel -setaam all loud 

 Select a balanced level between silence and performance on drive 0:  hdsentinel -setaam 0 C0 Note: some disks do not support balanced settings and they may select the most silent (80) or high performance (FE) setting instead. Please start  hsentinel  without parameters to see drive assignments (eg. /dev/sda) to drive indexes. 

 Due to the high amount of requests, it is possible to create minimal output which can be easily parsed and processed for further use. Some examples are: 

 List disk drives, temperature (in Celsius), health %, power on hours, disk model, disk serial, size: hdsentinel -solid . Sample results: 

 /dev/sda 42 3 4830 WDC_WD800JD-8LSA0 WD-WMAM9F937837 76324

 /dev/sdb 30 100 6128 ST3250624A 5ND3J94R 238472

 /dev/sdc 46 100 10982 WDC_WD2500JS-00MHB0 WD-WCANK8705209 238475

 /dev/sdd ? ? ? GENERIC_CF_READER 9999 0

 /dev/sde ? ? ? GENERIC_SD_READER 9999 1963

 

 List only temperature, drive, size: hdsentinel -solid | awk '{print $2, $1, $7}' 

 42 /dev/sda 76324 

 30 /dev/sdb 238472

 46 /dev/sdc 238475

 ? /dev/sdd 0 

 ? /dev/sde 1963 

 

 List only temperature, drive, model ID, highest temperature on top, drives without temperature information (for example card readers) removed: hdsentinel -solid | awk '{print $2, $1, $5}' | grep -v "^?" | sort -nr 

 46 /dev/sdc WDC_WD2500JS-00MHB0

 42 /dev/sda WDC_WD800JD-8LSA0 

 30 /dev/sdb ST3250624A 

 

 List only health, temperature, drive, lowest health on top, drives without temperature information (for example card readers) removed: hdsentinel -solid | awk '{print $3, $2, $1}' | grep -v "^?" | sort -n 

 3 42 /dev/sda 

 100 30 /dev/sdb

 100 46 /dev/sdc

 

 Note that the spaces in hard disk model ID and serial number are replaced with underscore (_). 

 If you have any ideas, thoughts about the automatic processing of output or if you have complete script(s) you want to share with other users, please  send a mail  and it will be published on this page with the name and credits of the sender of the script. 

 

 Download Hard Disk Sentinel Linux 

 Hard Disk Sentinel 32-bit Linux console version -  executable, gzip-compressed 

 Hard Disk Sentinel 64-bit Linux console version -  executable, zip-compressed 

 Hard Disk Sentinel Linux console version for Raspberry PI (ARM CPU) -  executable, gzip-compressed 

 Hard Disk Sentinel Linux console version for NAS boxes (ARMv5 CPU) -  executable, non-compressed  (see notes below) 

 Hard Disk Sentinel Linux console version for NAS boxes / Raspberry PI 4 (ARMv7 CPU) -  executable, gzip-compressed 

 Hard Disk Sentinel Linux console version for NAS boxes / Raspberry PI 4 64-bit (ARMv8 / ARM64 CPU) -  executable, zip-compressed           Can be used with Synology D220j and other  Synology NAS models  with ARMv8 CPU 

 Compatibility 

 Kernel support is required to detect and display information about SATA hard disks. This version was successfully tested under the following systems: 

 

 blackPanther OS v16.2 SE 

 CentOS 5, 6 and newer 

 Fedora 5, 6, 7, 8, 9, 10, 15 and newer 

 Ubuntu 8.04 server kernel 2.6.24-16-server, 9.04 

 Kubuntu 8.04 

 Xubuntu 8.04 

 Slackware 11.0 

 UHU Linux 2.1 

 SuSe 10.2, SuSe 10.3 (SuSe 10.0 - NOT working, reports wanted) 

 Debian Lenny 5.0 

 Debian GNU/Linux 6.0.1 Squeez 

 Raspberry PI (ARM CPU) 

 NAS boxes (ARM CPU): WD MyBook Live, D-Link DNS-320LW two bay Sharecenter, D-Link DNS-327L two bay Sharecenter, Seagate FreeAgent DockStar, Zyxel NSA320, Synology DS211. DSM 5.0-4493 update 3 

 

   

 Successfully tested with Adaptec SCSI controllers and SCSI hard disks, and with external enclosures built with different USB-ATA bridge in chips  USB Hard disks, hard disk enclosures . Supports LSI / Intel / IBM RAID controllers too. 

 Updates 

 0.20 

 

 

 

 7/7/2023 

 

 

 added -devs, -onlydevs, -nodevs command line switches to control which drives should be detected 

 added support of Kingston DataTraveler MAX : detect health, temperature, S.M.A.R.T. status of Kingston DataTraveler MAX series pendrives 

 added support of DockCase DSWC1P USB-M.2 (NVMe/SATA) adapter 

 added support of ASUS Tuf Gaming A1 USB 3.2 NVMe adapter 

 added support of ACOS SATA SSDs, Fanxiang S101, Go-Infinity SSD, ZOZT G3000, SQUARE ES 550, Ramsta R900 SSDs 

 improved support and reporting of 22 TB WD hard disk drives, Toshiba 18 TB hard disk drives 

 improved support/health display of SanDisk SDSSDH3 models when new/unused 

 improved support of various SAS drives 

 improved compatibility with various USB devices 

 improved Health % reporting for intensively used Indilinx Barefoot SSD 

 improved compatibility with GLOWAY SSD, HP SSD 600, Patriot Burst Elite SSD, Patriot P220 SSD, Patriot P210 SSD, PNY SSD, PNY ELITE SSD, Toshiba SATA SSD, Kingston SSD, Swissbit SSD 

 improved support of some Sandisk, Intel, LiteOn SATA SSDs, Transcend TS120GSSD220S SSD, WDS120G2G0A-00, Lexar SATA SSD, XRAYDISK SATA SSD, KINGSPEC SATA SSD, WALRAM SSD 

 improved support of Intel Pro 5400s SSDs 

 improved support and Health % calculation / text reports for various Sandisk SSDs 

 improved support and Health % calculation / text reports for various Patriot SSDs 

 improved support and Health % calculation / text reports for various DELL-specific SSDs 

 added support of Apricorn Fortress L3 and Padlock 3 external hard disk drives and Apricorn ASK3 or ASK3z Secure Key pendrives: in addition to the robust design and security functions the hard disk drives and pendrives supported by Hard Disk Sentinel: complete health, temperature, self-monitoring S.M.A.R.T. status detected and displayed. 

 added support of SSK USB 3.1 / 3.2 Gen 2 (10 Gbps) NVMe adapter: detect NVMe SSD status 

 added support of Kingston XS2000 SSD, Goodram CX400 G2, Zadak SSD 

 improved support of some Acer SSDs, Sandisk SSDs, Lite-on SSDs 

 added support of Kingston Design-In SSDs (OMSP0S3, OM4P0S3, OM8P0S3, OCP0S3) 

 improved health/status reporting for PNY SATA SSDs 

 improved display of power on time, health, status of newer WD / Hitachi SAS hard disk drives 

 improved text description of NVMe SSDs upon different problems / error conditions 

 adjusted calculation and reporting lower health on failing / problematic NVMe SSDs 

 improved support and detection with Synology NAS devices 

 

 

 

 

 

   

 0.19 

 

 

 

 28/2/2021 

 

 

 added support of newer SATA, SAS, NVMe M.2 PCie SSDs: detect health, temperature, and complete self-monitoring S.M.A.R.T. status 

 added support of newer hard disk drives, hybrid drives: detect health, temperature, and complete self-monitoring S.M.A.R.T. status 

 added support of newer NVMe-USB adapters / converters 

 added support of ORICO 3559U3 5-bay external USB 3.0 hard disk enclosure 

 added support of Yottamaster 4-bay and FS5U3 5-bay external USB 3.0 hard disk enclosure 

 improved  detection of NVMe M.2 SSDs  under Linux. Detect health, temperature and complete self-monitoring S.M.A.R.T. status of NVMe M.2 SSDs connected to motherboard (nvme0, nvme1, etc... devices) 

 

 

 

 

 

   

 0.18 

 

 

 

 7/11/2019 

 

 

 added  detection of NVMe M.2 SSDs  under Linux. Detect health, temperature and complete self-monitoring S.M.A.R.T. status of NVMe M.2 SSDs connected to motherboard (nvme0, nvme1, etc... devices) 

 added detection of NVMe M.2 SSDs with USB-NVMe adapters based on ASMEDIA ASM236x and JMicron JMS583 chipsets 

 added detection of SAS hard disk drives and SSDs configured as RAID with LSI, Intel, Dell SAS RAID controllers 

 added support for new hard disk and SSD models, identify self-monitoring status of Kingston, Intel, Samsung, KingDian, Sandisk, LiteOn, ADATA, Crucial, Corsair, Lenovo, Apacer, WD SSDs 

 added/improved support of various Western Digital, Hitachi, Seagate, Toshiba hard disk drives 

 added/improved support of Helium (He) filled hard disk drives 

 added/improved support of numerous external USB adapters, USB-ATA bridges, docking stations 

 fixed bug with empty memory card readers 

 

 

 

 

 

   

 

 0.17 

 

 

 

 30/8/2017 

 

 

 added  detection of industrial micro SD cards  under Linux. Detect status immediately if the detection method of the micro SD card previously configured under the Windows - or if  -autosd  command line parameter specified to detect and save the detection method and use in all sub-sequent detections under Windows or Linux. Note: with Raspberry PI, it is not possible to detect internal memory card status, just status of card in external USB memory card reader. 

 added support of ASMedia ASM1352R dual drive (RAID) enclosures: detection of complete status of both hard disks 

 added  -html  command line option to save HTML format report (-html -r reportfile.html) 

 added  -mht  command line option to save MHT format report (-mht -r reportfile.mht) 

 added support of more than 26 drives, detection of additional drives when required 

 added support for new hard disk and SSD models, identify self-monitoring status 

 

 

 

 

 

   

 

 0.16 

 

 

 

 13/9/2016 

 

 

 added support for Intel, IBM, LSI RAID controllers 

 experimental support of JMicron external USB RAID boxes (contact for assistance) 

 added support for 4000+ hard disk and SSD models, interpreting and displaying their self-monitoring status 

 displaying lifetime writes for SSDs 

 

 

 

 

 

   

 0.08 -  Download Hard Disk Sentinel Linux 0.08 version 

 

 

 

 6/3/2012 

 

 

 more hard disk drive / solid state disk details saved to report 

 improved compatibility with USB hard disks and various disk controllers 

 true 64 bit version released 

 

 

 

 

 

   

 0.03 -  Download this version 

 

 

 

 21/7/2009 

 

 

 more hard disk drive / solid state disk details saved to report 

 -aam and -setaam commands to modify acoustic level of disk drives 

 -dump to dump report to stdout 

 -solid option to create solid output for further processing 

 improved power on time detection for Samsung, Maxtor, Toshiba, Fujitsu models 

 improved detection of SCSI and USB drives 

 detection of SCSI and USB drive capacities 

 

 

 

 

 

   

 0.02 -  Download this version 

 

 

 

 25/7/2008 

 

 

 added support for SCSI and  USB hard disks 

 improved temperature detection on Fujitsu hard disks 

 

 

 

 

 

   

 0.01 -  Download this version 

 

 

 

 29/4/2008 

 

 

 first initial version 

 

 

 

 

 

   

 Raspberry PI 

 

 NAS boxes with ARM CPU 

 

 The Linux version of Hard Disk Sentinel also available for NAS boxes built with ARM CPUs. The NAS box should have telnet / SSH access in order to download and use this tool. 

 To get Telnet / SSH access, special firmware version(s) or additional packages (like the  fun_plug  may be required.  Putty  tool is also required to connect the NAS box and access its console. 

 Usage: 

 

 

 get Telnet / SSH access to the NAS box and log-in to your device by using putty.exe 

 

 

 enter  wget http://www.hdsentinel.com/hdslin/armv5/hdsentinelarm  to download the latest ARMv5 CPU build. To simplify things, the file is not compressed. 

 

 

 enter  chmod 755 hdsentinelarm  to set the proper permission (executable). You may use  chmod +x hdsentinelarm  instead. 

 

 

 enter  ./hdsentinelarm  to start the Hard Disk Sentinel on the NAS and get hard disk status information. 

 

 

 Tested on: 

 

 

 WD MyBook Live 

 

 

 D-Link DNS-320LW two bay Sharecenter 

 

 

 Seagate FreeAgent DockStar

Some useful ssh config option
Link: https://taozhi.medium.com/some-useful-ssh-config-option-7858a58c5e7b 

 When managing multiple Linux servers, we use SSH for logging in and performing tasks. Understanding how to configure SSH properly is essential for efficient server management. 

 Basic Config 

 Host my_jump identityfile "~/.ssh/my_jump" hostname 47.254.197.212 hostkeyalias my_jump user root port 22 

 In the above config, “my_jump” is the hostname supporting wildcards to match multiple servers simultaneously. 

 The identityfile specifies the authorized private keys, hostname is the server’s IP address, and hostkeyalias is useful for connecting to the server when its IP address changes without needing to update known_hosts. The user and port specify the SSH login credentials. 

 Reuse the sock 

 Upon relogging into the server, how can we bypass entering the password and reuse the previous session to quickly reconnect? We should the control setting in ssh config. 

 Host * serveraliveinterval 60 keepalive yes controlmaster auto controlpath ~/.ssh/socks/%h-%k-%p-%r controlpersist yes 

 By using the above configuration, we set the controlpath for all servers using the ‘*’ symbol in the Host field. The controlpath specifies the socket path. 

 %h represents the host IP. 

 %k represents the hostname. 

 %p represents the port. 

 %r represents the username. 

 When you connect to a server using ssh, you should see a socket file present.  ~/.ssh/socks . 

 

 

 

 

 

 

 

 

 

 

 

 Set Jump Server 

 To secure production servers inaccessible for direct login, we can first connect to a jump server, then use SSH through the jump server to access the production server. Automating this process is possible by configuring ProxyCommand or ProxyJump in the SSH settings. 

 Config the jump server a and b first. 

 Host jump-server-a HostKeyAlias jump-server-a Hostname 100.97.200.66 Host jump-server-b HostKeyAlias jump-server-b Hostname 100.97.200.67 Host jump-server-* HashKnownHosts no ServerAliveInterval 60 Port 22 User root PreferredAuthentications publickey IdentityFile ~/.ssh/id_taozhi Controlpath ~/.ssh/socks/%h-%k-%p-%r ControlMaster auto ControlPersist 5m setenv LC_ALL=C.UTF-8 

 Config the production servers 

 Host production-server-a ProxyJump jump-server-a Host production-server-b ProxyJump jump-server-b Host production-server-c ProxyCommand ssh -W %h:%p jump-server-b Host production-server-* LogLevel ERROR UserKnownHostsFile /dev/null StrictHostKeyChecking no Port 22 User root IdentityFile ~/.ssh/id_taozhi controlmaster no setenv LC_ALL=C.UTF-8 

 Following configuration, we can login to the production server locally. 

 ssh -o Hostname=172.16.28.19 production-server-a 

 You can log in to the production server with one command now. 

 

 Conclusions 

 SSH is a versatile command with numerous configuration options. More options can be found for reading  here . If you have any useful ssh config you are using, please comment it, let using it together.

Acesso SSH via web
Link: https://github.com/butlerx/wetty/tree/main 

 WeTTY = Web + TTY. 

 

 

   

 

 Terminal access in browser over http/https 

 

 

 Terminal over HTTP and https. WeTTY is an alternative to ajaxterm and anyterm but much better than them because WeTTY uses xterm.js which is a full fledged implementation of terminal emulation written entirely in JavaScript. WeTTY uses websockets rather than Ajax and hence better response time. 

 Prerequisites 

 

 

 node >=18 

 make 

 python 

 build-essential 

 

 Install 

 

 npm -g i wetty 

 

 

 

 Usage 

 

 $ wetty --help

Options:

 --help, -h Print help message [boolean]

 --version Show version number [boolean]

 --conf config file to load config from [string]

 --ssl-key path to SSL key [string]

 --ssl-cert path to SSL certificate [string]

 --ssh-host ssh server host [string]

 --ssh-port ssh server port [number]

 --ssh-user ssh user [string]

 --title window title [string]

 --ssh-auth defaults to "password", you can use "publickey,password"

 instead [string]

 --ssh-pass ssh password [string]

 --ssh-key path to an optional client private key (connection will be

 password-less and insecure!) [string]

 --ssh-config Specifies an alternative ssh configuration file. For further

 details see "-F" option in ssh(1) [string]

 --force-ssh Connecting through ssh even if running as root [boolean]

 --known-hosts path to known hosts file [string]

 --base, -b base path to wetty [string]

 --port, -p wetty listen port [number]

 --host wetty listen host [string]

 --command, -c command to run in shell [string]

 --allow-iframe Allow wetty to be embedded in an iframe, defaults to allowing

 same origin [boolean] 

 

 

 

 Open your browser on  http://yourserver:3000/wetty  and you will prompted to login. Or go to  http://yourserver:3000/wetty/ssh/<username>  to specify the user beforehand. 

 If you run it as root it will launch  /bin/login  (where you can specify the user name), else it will launch  ssh  and connect by default to  localhost . The SSH connection can be forced using the  --force-ssh  option. 

 If instead you wish to connect to a remote host you can specify the  --ssh-host  option, the SSH port using the  --ssh-port  option and the SSH user using the  --ssh-user  option. 

 Check out the  Flags docs  for a full list of flags 

 Docker container 

 

 To use WeTTY as a docker container, a docker image is available on  docker hub . To run this image, use 

 docker run --rm -p 3000:3000 wettyoss/wetty --ssh-host=<YOUR-IP> 

 

 

 

 and you will be able to open a ssh session to the host given by  YOUR-IP  under the URL  http://localhost:3000/wetty . 

 It is recommended to drive WeTTY behind a reverse proxy to have HTTPS security and possibly Let’s Encrypt support. Popular containers to achieve this are  nginx-proxy  and  traefik . For traefik there is an example docker-compose file in the containers directory. 

 FAQ 

 

 Check out the  docs 

 

 Running as daemon 

 HTTPS Support 

 

 Using NGINX 

 Using Apache 

 

 

 Automatic Login 

 Downloading Files 

 

 What browsers are supported? 

 

 WeTTY supports all browsers that  xterm.js supports . 

 Author 

 

 👤  Cian Butler  butlerx@notthe.cloud 

 

 Mastodon:  @butlerx@mastodon.ie 

 Github:  @butlerx 

 

 Contributing ✨ 

 

 Contributions, issues and feature requests are welcome! Feel free to check  issues page . 

 Please read the  development docs  for installing from source and running is dev node 

 Thanks goes to these wonderful people ( emoji key ):

Como baixar repositórios de imagens do Bitnami
Informação extraída do ChatGPT 

 O endereço que você passou: 

 

 https://github.com/bitnami/containers/tree/main/bitnami/suitecrm/8/debian-12 

 

 ...é uma página de diretório no GitHub , não um servidor de arquivos direto. Portanto, você não pode usar wget ou curl para baixar o diretório diretamente. 

 Mas há duas formas corretas de baixar esse conteúdo: 

 

 ✅ Opção 1: Clonar apenas esse diretório com git sparse-checkout (recomendado) 

 Se você não quiser baixar o repositório todo , mas apenas esse diretório, use git sparse-checkout . 

 Passos: 

 # 1. Clone o repositório, mas sem o conteúdo git clone --depth 1 --filter=blob:none --sparse https://github.com/bitnami/containers.git 

 # 2. Vá para a pasta clonada cd containers 

 # 3. Ative sparse-checkout para baixar só o diretório desejado git sparse-checkout set bitnami/suitecrm/8/debian-12 

 

 Resultado: 

 Você terá somente a pasta bitnami/suitecrm/8/debian-12 localmente, sem baixar o repositório completo (~centenas de MB normalmente). 

 

 ✅ Opção 2: Baixar o repositório inteiro (caso aceite o tamanho maior) 

 Se preferir baixar tudo (incluindo outras imagens), use: 

 git clone https://github.com/bitnami/containers.git 

 Depois navegue até: 

 cd containers/bitnami/suitecrm/8/debian-12 

 ❌ Por que wget ou curl não funciona? 

 

 

 GitHub não oferece diretórios como arquivos ZIP automaticamente via URL de pasta. 

 

 

 wget baixaria o HTML da página, não os arquivos reais do diretório. 

 

 

 Shell Script para baixar aplicativos pelo caminho no Bitnami 

 #!/bin/bash 

 echo "🔧 Exemplo de caminho: bitnami/suitecrm/8/debian-12" read -p "Digite o caminho completo do diretório no repositório Bitnami Containers: " TARGET_DIR 

 # Repositório Bitnami Containers REPO_URL="https://github.com/bitnami/containers.git" REPO_DIR="bitnami-containers" 

 # Limpar se pasta já existir if [ -d "$REPO_DIR" ]; then   echo "Removendo pasta existente: $REPO_DIR"   rm -rf "$REPO_DIR" fi 

 echo -e "\n📦 Iniciando download do diretório '$TARGET_DIR'...\n" 

 # Clonar com sparse-checkout git clone --depth 1 --filter=blob:none --sparse "$REPO_URL" "$REPO_DIR" || {   echo "❌ Falha ao clonar repositório."   exit 1 } 

 cd "$REPO_DIR" || {   echo "❌ Erro ao acessar diretório $REPO_DIR"   exit 1 } 

 # Baixar apenas o diretório informado if git sparse-checkout set "$TARGET_DIR"; then   echo -e "\n✅ Diretório '$TARGET_DIR' baixado com sucesso!"   echo "📁 Caminho local: $REPO_DIR/$TARGET_DIR" else   echo -e "\n❌ Diretório '$TARGET_DIR' não encontrado no repositório."   exit 1 fi

Links para Ícones e Logotipos
LInk: https://iconduck.com/ 

  