Bash shell script – Juntar arquivos .zip

#!/usr/bin/env bash

#########################

# test_juntar_arquivos_zip.sh
# data: 02052020

#########################

clear

# --------------------------- #

echo Listando...
ls -t | head
echo
echo Local:
pwd
echo

# --------------------------- #

read -p "Juntar arquivos zip? Tecle Enter : "
echo

# --------------------------- #

echo "Digite o nome do arquivo SEM ext .part : "
read ARQUIVO
echo -e "\nPara juntar arquivos zip divididos tecle 1 (um). Para sair tecle 2 : \n"
while :
do
read INPUT
case $INPUT in
1)
echo -e "\nVocê teclou : $INPUT\n"
cat "$ARQUIVO".parta* >backup.zip.completo
break
;;
2)
echo -e "\nVocê teclou : $INPUT\n"
echo -e "\nSaindoooo...\n"
sleep 2
echo -e "\n\e[1;33;40m*** E tá tudo resolvido! ***\e[0m\n"
sleep 2
exit
;;
esac
done

# --------------------------- #

exit 0

# --------------------------- #

# zip -r nome_do_file.zip arquivo1 folder1

# fim do script

Bash shell script grep encontre duas palavras

#!/usr/bin/env bash

######################

# test_encontre_a_palavra.sh
# 02052020

######################

clear

echo Abra-no-Diretório-onde-está-o-arquivo.
echo Para-recomeçar-digite-Ctrl+c
echo

echo Local:
pwd

echo
echo Lista:
ls -tCF | head -25

echo
echo "Digite o arquivo em que procura a palavra : "
read filename

echo
echo "Digite a palavra que quer encontrar : "
read word

echo
cat $filename | grep "$word"
echo

echo Local:
pwd
echo

echo "Digite o caminho para buscar em todo o diretório : "
read dot

echo
grep -r -w "$word" "$dot" | less
echo

echo -----------------------------
echo
sleep 2

echo "Procura por duas palavras diferentes? Digite a primeira : "
read pri
echo
echo "Digite a segunda : "
read seg

echo Lista:
ls -tCF | head

echo
echo "Digite o arquivo em que procura a palavra : "
read mfile

grep -E -w "$pri|$seg" "$mfile"

# fim do script

Bash script que busca palavras num texto

#!/bin/bash

##########################

# test_grepbuscarpalavra.sh
# data: 01052020

##########################

clear

# informa executando variáveis dentro do echo
echo -e "\nVocê está em : $(pwd)\n"

# listar
/bin/ls -t | head -20

# verifica se o diretório existe
if [[ -d $PATH ]] ; then
echo ""
echo "Saiba que o diretório existe."
fi

# busca com grep verifica a existência do arquivo
read -p "Digite o nome do arquivo : " filename

if [[ -f $filename ]] ; then
echo "O $filename existe."
read -p "Digite a palavra que busca: " word
grep "$word" "$filename"
else
echo "O $filename não existe."
fi

# fim do script

Bash shell script: zip e unzip

#!/usr/bin/env bash

#########################################

# test_compactar_e_desc_zip.sh

# data: 01052020

#########################################

clear

# -------------------------------------------

echo -e "\n*** Abra o terminal onde está o arquivo a ser compactado. *** \n\nOBS: Para sair deste script tecle Ctrl+c"

sleep 2

# -------------------------------------------

echo ""

echo -e "\nConfere os primeiros arquivos deste diretório... \n"

ls -t | head -15

echo ""

read -p "Digite o titulo do arquivo zip a ser criado.\
Ex. meu_arquivo.zip : " FILE # armazena URL

echo -e "Você digitou: $FILE" # imprime a FILE

echo -e "\n1- Confere os primeiros arquivos deste diretório... \n"

ls -tCF | head -21

echo ""

read -p "Digite titulo completo (com espaços entre eles)\
dos arquiv(os)/past(as) a ser(em) compactados : " ARQUIVOS

echo -e "Você digitou: $ARQUIVOS"

# -------------------------------------------

echo -e "\n\e[1mPara compactar em zip digite um (1),\
descompactar digite dois (2)\e[0m\n"

while : # loop while
do # fechamento de do é done
read DIGITE # armazena digito 1 ou 2
case $DIGITE in # caso o digito seja...
# fechamento de case é esac

# --------------------------------------- #

1) # dígito 1 executa...

echo -e "Você digitou: $DIGITE, compactando... "

zip -r "$FILE" "$ARQUIVOS"

break # sai após executar comando
;;

# --------------------------------------- #

2) # dígito 2 executa...
echo -e "Você digitou $DIGITE, descompactando... "

unzip "$FILE" # comando 2

break # sai após executar comando
;;

# --------------------------------------- #

*)
echo -e "Desculpe eu só entendo 1 e 2." # se não for nem 1 nem 2...

;;
esac # fechamento de case e sai

# --------------------------------------- #

done # fechamento de do e acabou

# --------------------------------------- #

echo ""

echo -e "\n:2- Confere a lista de arquivos:\n"

sleep 2

ls -tCF | head -15

# --------------------------------------- #

echo ""

read -p "Para deletar o arquivo original Tecle Enter.\
Para sair sem deletar tecle Ctrl+c."

echo ""

ls -tCF | head

echo ""

read -p "Certeza mesmo? Ok, tecle Enter : "

rm -f "$FILE"

# --------------------------------------- #

echo -e "\n:3- Confere a lista de arquivos:\n"

sleep 2

ls -tCF | head -15

# --------------------------------------- #

echo -e "\n\e[1;33;40m*** E tá tudo resolvido! ***\e[0m\n" # mensagem final

# --------------------------------------- #

# zip -r nome_do_file.zip arquivo1 folder1

# fim do script

Linux execução do bash shell script

Linux Execução do Bash Shell no Shell e no Bash shell script

Execução do Shell - Se você deseja usar a saída de uma execução do shell dentro de uma string, pode fazê-lo com um cifrão seguido de parênteses.

($ ())

Por exemplo, o comando whoami imprimirá seu usuário atual. Para usá-lo em uma cadeia, envolva whoami na sintaxe de execução do shell. Digito no terminal:

---

echo "Olá, $(whoami)!"

Resultado:

Olá ArceuValenti!

---

echo "Aqui é $(pwd)"

---

echo "Listando os mais novos primeiro : $(ls -t | head)"

echo -e "\nListando os mais novos primeiro :\n\n$(ls -t | head)\n"

---

Aprenda esta po**a de uma vez cac*t* do c*r*io!!!

---

Veja este caso abaixo digito no terminal:

VAR="O local é : $(pwd) - Listando... $(ls -t | head)"

---

A variável VAR que possui dois comandos de execução em si, está armazenada na seção deste terminal onde estou. Quero executar esta variável VAR! Tento:

---

echo "$(VAR)" # Parece seguro, mas... Não funciona!

echo $(VAR) # Parece inseguro e... Também não funciona!

echo $VAR # Funciona, mas me sinto jogado aos lobos.

echo ${VAR} # Funciona, mas me sinto jogado as hienas.

echo "${VAR}" # Funciona direito e me sinto seguro como um neném seio materno!

---

Agora imagine que poderia colocar dezenas de comandos e códigos negros como a noite coletados na web numa variável, criar outras mais com mais comandos dentro delas e executar tudo de uma vez só com um objetivo específico cheio de vigor e amor/ódio numa rede, num arquivo em nuvem... Enviar de alguma forma para alguma coisa/alguém... Nem pensar! Um simples link num comentário te leva a estes cógigos negativos. Tenha atenção e cuidado.

---

Continuando...

Entrada do usuário? Declaramos uma variável no último exemplo, mas também podemos fazer com que o usuário defina o valor de uma variável dinamicamente. Por exemplo, em vez de apenas fazer com que o script diga Olá, Mundo !, podemos fazer com que ele solicite o nome da pessoa que está chamando o script e, então, produza esse nome. Faremos isso usando o comando read.

---

Eu crio estas variáveis abaixo:

ddd='Quem ser você?'
eee='Arceu Valenti'
fff='Olá! Como vai'
ggg='Ora, eu sô'
hhh='Colé o pobrema?'

---

Digito no terminal:

clear ; ddd='Quem ser você?' ; eee='Arceu Valenti' ; fff='Olá! Como vai' ; ggg='Ora, eu sô' ; hhh='Colé o pobrema?' ; echo "$ddd" ; echo ; sleep 2 ; echo "$ggg $eee $hhh" ; sleep 2 ; echo ; echo "$fff seu $eee!" ; sleep 2 ; echo ; echo "Senhor $eee?" ; sleep 2 ; echo ; echo "$hhh" ; sleep 2 ; echo

---

Resultado:

~:$ clear ; ddd='Quem ser você?' ; eee='Arceu Valenti' ; fff='Olá! Como vai' ; ggg='Ora, eu sô' ; hhh='Colé o pobrema?' ; echo "$ddd" ; echo ; sleep 2 ; echo "$ggg $eee $hhh" ; sleep 2 ; echo ; echo "$fff

Quem ser você?

Ora, eu sô Arceu Valenti Colé o pobrema?

Olá! Como vai seu Arceu Valenti!

Senhor Arceu Valenti?

Colé o pobrema?

~:$

---

No script abaixo o usuário que dá o nome quando executa o script:

#!/usr/bin/env bash

#############

# qservc.sh

#############

echo 'Quem ser você?'

read quem

echo "Olá! Como vai $quem!"

---

Assim:

$ ./qservc.sh

$ Arceu

$ Olá! como vai Arceu!

---

Por isto que os nerds Linux são paranóicos com tudo. Compreendeu? Não? Nem eu!

---

Até Breve!

---

Bash script compactar arquivos tar.xz

#!/usr/bin/env bash

#########################################

# test_compactar_e_desc_tar-xz.sh

# data: 30042020

# instale: xz-utils

# O que é um arquivo tar.xz? O tar é um utilitário que combina vários arquivos
# em um único arquivo. A principal vantagem de um utilitário como o tar está
# na transferência de arquivos. Devido à sobrecarga, a transferência de 100
# arquivos de 1 KB levará mais tempo do que a transferência de um arquivo de
# 100 KB. Usando o tar, você pode arquivar vários arquivos em um único
# arquivo, economizando tempo e largura de banda ao transferir o arquivo.
# Mas o tar não comprime arquivos. Se você usar o tar para combinar 100
# arquivos de 1 KB cada, o arquivo tar resultante provavelmente terá cerca
# de 100 KB. Para economizar ainda mais tempo e largura de banda,
# são utilizados utilitários de compactação. Essas ferramentas de compactação
# reduzirão o tamanho do arquivo tar resultante. XZ é uma dessas ferramentas
# de compressão e utiliza o algoritmo de compressão LZMA. É por isso que o
# arquivo tar.xz resultante em nosso cenário pode ser consideravelmente menor
# que 100 KB, digamos 50 KB.

#########################################

clear

# -------------------------------------------

echo -e "\n*** Abra o terminal onde está o arquivo a ser compactado. *** \n\nOBS: Para sair deste script tecle Ctrl+c"

sleep 2

# -------------------------------------------

echo ""

echo -e "\nConfere o 20 primeiros arquivos deste diretório... \n"

ls -t | head

echo ""

read -p "Digite o do arquivo tar.xz a ser criado.\
Ex. meu_arquivo.tar.xz : " FILE # armazena URL

echo -e "Você digitou: $FILE" # imprime a FILE

echo -e "\n1- Confere o 20 primeiros arquivos deste diretório... \n"

ls -tCF | head -21

echo ""

read -p "Digite titulo completo (com espaços entre eles)\
dos arquiv(os)/past(as) a ser(em) compactados : " ARQUIVOS

echo -e "Você digitou: $ARQUIVOS"

# -------------------------------------------

echo -e "\n\e[1mPara compactar em tar.xz digite um (1),\
descompactar digite dois (2)\e[0m\n"

while : # loop while
do # fechamento de do é done
read DIGITE # armazena digito 1 ou 2
case $DIGITE in # caso o digito seja...
# fechamento de case é esac

# --------------------------------------- #

1) # dígito 1 executa...

echo -e "Você digitou: $DIGITE, compactando... "

tar -cJf "$FILE" "$ARQUIVOS"

break # sai após executar comando
;;

# --------------------------------------- #

2) # dígito 2 executa...
echo -e "Você digitou $DIGITE, descompactando... "

tar -xf "$FILE" # comando 2

break # sai após executar comando
;;

# --------------------------------------- #

*)
echo -e "Desculpe eu só entendo 1 e 2." # se não for nem 1 nem 2...

;;
esac # fechamento de case e sai

# --------------------------------------- #

done # fechamento de do e acabou

# --------------------------------------- #

echo ""

echo -e "\n:2- Confere a lista de arquivos:\n"

sleep 2

ls -tCF | head -15

# --------------------------------------- #

echo ""

read -p "Para deletar o arquivo original Tecle Enter.\
Para sair sem deletar tecle Ctrl+c."

rm -f "$FILE"

# --------------------------------------- #

echo -e "\n:3- Confere a lista de arquivos:\n"

sleep 2

ls -tCF | head -15

# --------------------------------------- #

echo -e "\n\e[1;33;40m*** E tá tudo resolvido! ***\e[0m\n" # mensagem final

# --------------------------------------- #

# fim do script

Senha de Linux ou UNIX protege arquivos?

A senha de Linux ou UNIX protege arquivos?

# ----------------

Como protejo arquivos com senha?

# ----------------

O GNU/Linux e outros sistemas Unix oferecem fortes permissões de arquivo e o conceito de ACL (lista de controle de acesso) na segurança do computador Linux/UNIX, usada para forçar a separação de privilégios. No entanto, nenhum deles oferece uma senha para proteger arquivos.

Você pode usar a ferramenta de criptografia e assinatura GNU gpg (GNU Privacy Guard).

É um conjunto de software criptográfico.

# ----------------

Muitos novos usuários de UNIX/Linux ficam confusos com esse fato.

A solução é usar os seguintes comandos para criptografar ou descriptografar arquivos com uma senha.

Use o comando GNU gpg.

Use o comando mcrypt.

Use o comando openssl.

# ----------------

MCRYPT COMANDO

Mcrypt é um programa simples de criptografia, um substituto para a antiga criptografia unix. Ao criptografar ou descriptografar um arquivo, um novo arquivo é criado com a extensão .nc e modo 0600. Istale pelo software center do seu sistema GNU/Linux.

O novo arquivo mantém a data de modificação do original. O arquivo original pode ser excluído especificando o parâmetro -u.

---

EXEMPLOS:

Encriptar data.txt file:

$ mcrypt data.txt

Output:

Enter the passphrase (maximum of 512 characters)
Please use a combination of upper and lower case letters and numbers.
Enter passphrase:
Enter passphrase:
A new file is created with the extension .nc i.e. data.txt.nc:

$ ls data.txt.nc
$ cat data.txt.nc

Descritografar data.txt.nc file:
$ mcrypt -d data.txt.nc

Output:

Enter passphrase:
File data.txt.nc was decrypted.
Verify that file was decrypted:

$ ls data.txt
$ cat data.txt

# ----------------

COMANDO OPENSSL

O OpenSSL é um kit de ferramentas de criptografia que implementa os protocolos de rede Secure Sockets Layer (SSL v2 / v3) e Transport Layer Security (TLS v1) e os padrões de criptografia relacionados exigidos por eles.

Você pode usar o programa openssl, que é uma ferramenta de linha de comando para usar as várias funções de criptografia da biblioteca de criptografia do OpenSSL a partir do shell.

Pode ser usado para criptografar e descriptografar arquivos com uma senha.

# ----------------

Por exemplo vou criptografar file.txt para file.out usando AES de 256 bits no modo CBC

$ openssl enc-aes-256-cbc -salt -in file.txt -out file.out.

# ----------------

Descriptografe o arquivo criptografado file.out

$ openssl enc-d -es-256-cbc -in file.out

Onde, enc: codificação com cifras.

# ----------------

Uma opção bem fácil também, é usar o SEAHORSE-NAUTILUS. Instale pelo software center do seu sistema GNU/Linux.

# ----------------

Teste com arquivos copiados, até pegar prática.

# ----------------

Você pode até criar um bash shel script para facilitar mais ainda...

#!/usr/bin/env bash

########################

# autor: Arceu Valenti_1000%
# test_cryptografar_mcrypt.sh
# data: 29042020
# versão: 0.0
# uso: ./test_cryptografar_mcrypt.sh

#######################

clear

echo -e "\nAbra o terminal onde está o arquivo a ser criptografado e tecle\
Enter.\nPara sair tecle Ctrl+c"

sleep 2

echo ""

# ------------------------ #

echo -e "\nListando os primeiros arquivos...\n"

sleep 2

ls -tCF | head -15

echo ""

# ------------------------ #

read -p "Digite o nome completo do arquivo : " FILE # armazena URL

echo -e "Você digitou: $FILE" # imprime a FILE

# ------------------------ #

echo "" # parágrafo

# ------------------------ #

echo -e "\e[1mPara criptografar digite um (1), descriptografar dois (2)\e[0m"

while : # loop while
do # fechamento de do é done
read DIGITE # armazena digito 1 ou 2
case $DIGITE in # caso o digito seja...
# fechamento de case é esac

# ------------------------ #

1) # dígito 1 executa...
echo -e "Você digitou: $DIGITE, critografando... "

mcrypt "$FILE" # comando 1

break # sai após executar comando
;;

# ------------------------ #

2) # dígito 2 executa...
echo -e "Você digitou $DIGITE, descriptografando... "

mcrypt -d "$FILE" # comando 2

break # sai após executar comando
;;

# ------------------------- #

*)
echo -e "Desculpe eu só entendo 1 e 2." # se não for nem 1 nem 2...

;;
esac # fechamento de case e sai

# ------------------------ #

done # fechamento de do e acabou

# ------------------------ #

echo ""

read -p "Para deletar o arquivo original Tecle Enter.\
Para sair tecle Ctrl+c."

rm -f "$FILE"

# ------------------------ #

echo -e "\n:Confere a lista de arquivos:\n"

sleep 2

ls -tCF | head -15

# ------------------------ #

echo -e "\n\e[1;33;40m*** E tá tudo resolvido! ***\e[0m\n" # mensagem final

# ------------------------ #

# fim do script

---

Até Breve!

---

Bash abrir um terminal por um arquivo shell script?

---

Linux como abrir um terminal em um shell script e executar um comando

---

Como criar um script que abra as janelas do terminal e execute comandos nelas?

# ---------------------------------

No gnome-terminal, vá para Editar -> Preferências do perfil -> Título. Clique na guia comando. Selecione Segure o terminal no menu suspenso chamado Quando o comando sair. Você deve criar um novo perfil para isso e executar com ele.

gnome-terminal --window-with-profile=NAMEOFTHEPROFILE -e command

# ---------------------------------

Exemplo:

gnome-terminal --window-with-profile=DUPLOTERM -e command

# ---------------------------------

Comandos para colocar no shell script:

gnome-terminal -- commando

Exemplo:

gnome-terminal -- epiphany -p "https://start.duckduckgo.com/ & exit

# ---------------------------------

Ou:

xterm -e command

Ou:

konsole -e command

Também:

terminal -e command

# ---------------------------------

Para fazer o terminal ficar quando o comando acabar:

No Konsole tem a opção --noclose flag.

No Xterm tem a opção -hold flag.

# ---------------------------------

Um Bash shell script para testar isto?

# ---------------------------------

#!/usr/bin/env bash

#########################

# test_abrir_terminal_executar_cmd.sh

#########################

clear

# ----------------------- #

function abreterm(){

echo "URL exemplo: https://start.duckduckgo.com/"

sleep 2

read -p "Digite a URL que deseja abrir : " URL

echo "Executando... Para fechar o terminal tecle ctrl+c."

sleep 2

gnome-terminal -- epiphany -p "$URL" &

}

abreterm

# fim do script

# ---------------------------------

OBS:
Tavez fosse mais legal fazer assim:

# ---------------------------------

#!/usr/bin/env bash

#########################

# test_abrir_programa_e_sair.sh

#########################

clear

# ----------------------- #

function abreprog(){

echo "URL exemplo: https://start.duckduckgo.com/"

sleep 2

read -p "Digite a URL que deseja abrir : " URL

echo "Executando..."

sleep 2

firejail epiphany -p "$URL" & exit

}

abreprog

exit 0

# fim do script

# ---------------------------------

Até Breve!

:)

# ---------------------------------

Bash script rotacionar imagem

#!/usr/bin/env bash

###########################

# test_jpg_rotate_90.sh
# rotaciona 90 graus, sobrescrevendo
# metadata

###########################

# ---------------------------------- #

function rotacionar(){

for img in *.jpg; do
# otimiza
jpegoptim "$img"
# sobrescreve
exiftool -all= -overwrite_original -ext "$img"
# rotaciona
mogrify -rotate 90 "$img"
done

}

rotacionar

# ---------------------------------- #

# pausa
sleep 3

# espaço
echo ""

# ---------------------------------- #

function otimizapng(){

# ---------------------------------- #

# otimiza
optipng *.png
# sobrescreve metadata
exiftool -all= -overwrite_original -ext *.png

}

otimizapng

echo ""

echo -e "\nFeito! \n"

# ---------------------------------- #

# OBS:
# para rotacionar png:
# mogrify -rotate 90 *.png

# fim do script

Teste bash shell script telegram bot envia

#!/usr/bin/env bash

########################

# test_telegram_bot_envia_stickers.sh
# precisa do: 1) token, 2) chat_id, 3) código do sticker
# (acha com getupdates info de um sticker enviado a alguém)

########################

# ---- Variáveis ---- #

# TOKEN1=""

# URL_UP='https://api.telegram.org/bot"$TOKEN1"/getupdates'

# URLMSG="https://api.telegram.org/bot$TOKEN4/sendMessage"

# URL1="https://api.telegram.org/bot$TOKEN/sendMessage"

URL2="https://api.telegram.org/bot$TOKEN4/sendMessage"

# ------------------- #

clear

echo "*** Busque atualizações de bot e procure o id do bate-papo ***"

sleep 2

echo ""

read -p "Digite o Token de um bot : " TOKENUP

curl https://api.telegram.org/bot"$TOKENUP"/getUpdates

echo ""

echo "*** Colete informações... ***"

sleep 2

echo ""

# ------------------- #

read -p "*** Vamos ver os updates de outro bot? Tecle Enter ***"

read -p "Digite o TOKEN de outro bot : " TOKEN1

# ------------------- #

echo "Verificando..."

sleep 2

# curl "$URL_UP"

curl https://api.telegram.org/bot"$TOKEN1"/getupdates

echo ""

echo "*** Colete informações... ***"

sleep 2

echo ""

# ------------------- #

echo "*** Enviar sticker ***"

sleep 2

echo ""

read -p "Digite o token : " TOKEN3

read -p "Digite o chat_id : " CHAT_ID

read -p "Digite o código do sticker : " STICKER

# ------------------- #

# --------------- ANOTAÇÕES:

# EXEMPLOS:

# para enviar stickers

# https://api.telegram.org/bot/sendSticker?chat_id=&sticker=BCBBADAgADOQADflsDlKEqOOd72VLKAg

# https://api.telegram.org/bot"$TOKEN3"/sendSticker?chat_id=&sticker="$STICKER"

# URL2='https://api.telegram.org/bot"$TOKEN3"/sendSticker?chat_id=&sticker="$STICKER"'

# ------------------- #

# para enviar arquivos

# curl "chat_id=$CHAT_ID&sticker=$STICKER" https://api.telegram.org/bot"$TOKEN3"/sendDocument

# curl https://api.telegram.org/bot"$TOKEN3"/sendSticker?chat_id="$CHAT_ID"&sticker="$STICKER"

# teste alterado para enviar stickers:

# ------------------- #

# teste - ou este...
curl -v -F "chat_id=$CHAT_ID&sticker=$STICKER" https://api.telegram.org/bot"$TOKEN3"/sendSticker

sleep 3

# teste - ou este...
curl https://api.telegram.org/bot"$TOKEN3"/sendSticker?chat_id="$CHAT_ID"&sticker="$STICKER"

# ------------------- #

echo "Confere..."

sleep 2

echo ""

curl https://api.telegram.org/bot"$TOKEN3"/getupdates

echo ""

echo "*** Telegram bot enviar mensagem ***"

echo ""

# URL2="https://api.telegram.org/bot$TOKEN4/sendMessage"

read -p "Digite o Token : " TOKEN4

read -p "Digite o chat_id : " CHAT_ID

read -p "Digite a mensagem : " MSG

curl -s -X POST "$URL2" -d chat_id="$CHAT_ID" -d text="$MSG"

echo ""

echo ":Confere..."

curl https://api.telegram.org/bot"$TOKEN4"/getupdates

# fim do script

Bash scripts para bot Telegram

Linux bash scripts para usar em bots no Telegram.

---

#!/usr/bin/env bash

########################

# test_telegr_bot_send_stickers.sh
# precisa do: 1) token, 2) chat_id, 3) código do sticker
# (acha com getupdates info de um sticker enviado a alguém)

########################

# ---- Variáveis ---- #

# TOKEN1=""

# URL_UP='https://api.telegram.org/bot"$TOKEN1"/getupdates'

# ------------------- #

read -p "*** Vamos ver os updates do bot. Tecle Enter ***"

read -p "Digite o TOKEN do bot : " TOKEN1

# ------------------- #

echo "Verificando..."

sleep 2

# curl "$URL_UP"

curl https://api.telegram.org/bot"TOKEN1"/getupdates

echo ""

# ------------------- #

echo "*** Enviar sticker ***"

sleep 2

echo ""

read -p "Digite o token : " TOKEN

read -p "Digite o chat_id : "

read -p "Digite o numero do sticker : "

# ------------------- #

# EXEMPLO:
# <a href="https://api.telegram.org/bot/sendSticker?chat_id=&sticker=BCBBADAgADOQADfyekzlsDlKEqOOd72VLKAg">https://api.telegram.org/bot/sendSticker?chat_id=&sticker=BCBBADAgADOQADfyekzlsDlKEqOOd72VLKAg

curl https://api.telegram.org/bot"TOKEN"/sendSticker?chat_id="CHAT_ID"&sticker="TICKER"

# ------------------- #

echo "Confere..."
sleep 2

echo ""

curl https://api.telegram.org/bot"TOKEN1"/getupdates

echo ""

# fim do script

---

#!/usr/bin/env bash

#################

# test_bot_enviar_arquivo.sh

# telegram bot enviar arquivo. tem que ter token e chat_id

#################

clear

read -p "Digite o Token : " TOKEN

read -p "Digite o chat_id : " CHAT_ID

read -p "Digite o nome/caminho do arquivo : " FILE

curl -v -F "chat_id=$CHAT_ID" -F document=@"$FILE" https://api.telegram.org/bot"TOKEN"/sendDocument

echo ""

# fim do script

---

#!/usr/bin/env bash

#################

# tgr_msg.sh

# telegram bot envia mensagem

#################

URL="https://api.telegram.org/bot$TOKEN/sendMessage"

clear

read -p "Digite o Token : " TOKEN

read -p "Digite o chat_id : " CHAT_ID ; read -p "Digite a mensagem : " MSG

curl -s -X POST "$URL" -d chat_id="$CHAT_ID" -d text="$MSG"

echo ""

# fim do script

---

#!/usr/bin/env bash

#################

# trg_search_id.sh

# busque atualizações de bot e procure o id do bate-papo

#################

read -p "Digite o Token : " TOKEN

curl https://api.telegram.org/bot"TOKEN"/getUpdates

echo ""

# fim do script

---

Até breve!

Bash script telegram bot enviar mensagens

Para obter o ID do bate-papo em grupo e enviar mensagens, faça o seguinte. Adicione o Telegram BOT ao grupo. Obtenha a lista de atualizações para o seu bot:

https://api.telegram.org/botTOKEN/getUpdates

Exemplo:

https://api.telegram.org/bot123456789:jbd78sadvbdy63d37gda37bd8/getUpdates e procure pelo "chat"

{"update_id":8393,"message":{"message_id":3,"from":{"id":7474,"first_name":"AAA"},"chat":{"id":,"title":""},"date":25497,"new_chat_participant":{"id":71,"first_name":"NAME","username":"YOUR_BOT_NAME"}}}

Esta é uma amostra da resposta quando você adiciona seu BOT a um grupo. Use o "id" do objeto "chat" para enviar suas mensagens.

---

#!/usr/bin/env bash

##################

# Nome: test_script_telegram_bot_mensagem.sh
# Um script Bash simples que envia a mensagem
# "Hello World" através da API do Telegram.
# Pode enviar outras mensagens também
# Precisa do:
# 1) token:
#
# 2) chat_id:
# Para saber melhor veja os posts anteriores

##################

# VARIÁVEIS:

TOKEN=TOKEN (SEQUENCIA DE NUMEROS E LETRAS)

CHAT_ID=-CHAT_ID (NUMEROS)

MESSAGE="Alô Mundo!"

URL="https://api.telegram.org/bot$TOKEN/sendMessage"

# --------------------------- #

# curl -s -X POST $URL -d chat_id=$CHAT_ID -d text="$MESSAGE"

echo -e "*** Vamos usar o bot para conversar no Telegram ***"

sleep 2

echo ""

# --------------------------- #

read -p "Digite uma mensagem : " MSG

echo "Você digitou : $MSG"

echo ""

# --------------------------- #

curl -s -X POST $URL -d chat_id=$CHAT_ID -d text="$MSG"

echo ""

echo "Feito!"

# --------------------------- #

# ENVIAR PELO TERMINAL MENSAGEM A UM DETERMINADO CHAT ESPECÍFICO USANDO CURL:

# Precisa do:

# 1) token: SEQUENCIA DE NÚMEROS E LETRAS

# 2) chat_id: -NUMEROS

# --------------------------- #

# Para descobrir CHAT_ID e outras coisas...

# https://api.telegram.org/botTOKEN/getupdates/

# --------------------------- #

# Comandos:

# 1) curl -s -X POST https://api.telegram.org/bot/sendMessage -d chat_id=- -d text="Muito legal estar aqui pessoal!"

# 2) curl -s -X POST https://api.telegram.org/bot/sendMessage -d chat_id=- -d text="Muito legal! Vamos conversar aqui gente!"

# 3) curl -s -X POST https://api.telegram.org/bot/sendMessage -d chat_id=- -d text="Como é que faz para fazer pedidos aqui? Gostaria de pedir uns..."

# --------------------------- #

# fim do script

Criar Telegram bot rodando no Linux?

Telegram como criar um bot? Um bot bem básico no Linux só para iniciar?

Aqui o que consegui entender...

---

1) Precisa do: BotFather

2) Pode usar uma plataforma para programar o bot por exemplo:

Menu Builder Bot ou chatfuelbot

---

OBS:

Telegram comandos botfather - Comandos do botfather:

Eu posso ajudá-lo a criar e gerenciar bots do Telegram. Se você é novo na API Bot, consulte o manual (https://core.telegram.org/bots). Você pode me controlar enviando estes comandos:

/newbot - create a new bot
/mybots - edit your bots [beta]

Edit Bots
/setname - change a bot's name
/setdescription - change bot description
/setabouttext - change bot about info
/setuserpic - change bot profile photo
/setcommands - change the list of commands
/deletebot - delete a bot

Bot Settings
/token - generate authorization token
/revoke - revoke bot access token
/setinline - toggle inline mode (https://core.telegram.org/bots/inline)
/setinlinegeo - toggle inline location requests (https://core.telegram.org/bots/inline#location-based-results)
/setinlinefeedback - change inline feedback (https://core.telegram.org/bots/inline#collecting-feedback) settings
/setjoingroups - can your bot be added to groups?
/setprivacy - toggle privacy mode (https://core.telegram.org/bots#privacy-mode) in groups

Games
/mygames - edit your games (https://core.telegram.org/bots/games) [beta]
/newgame - create a new game (https://core.telegram.org/bots/games)
/listgames - get a list of your games
/editgame - edit a game
/deletegame - delete an existing game

---

Comandos que usei no botfather do Telegram:

1) /start
2) /newbot

meumeubot

username: meumeu

---

Feito! Parabéns pelo seu novo bot. Você o encontrará em:

t.me/meumeubot

---

Com isso feito, você recebeu a chave de API do seu bot. A chave da API é como o Telegram sabe que o código que você escreve está associado a esse bot em particular. Todo bot tem sua própria chave de API e você não deve compartilhá-lo com ninguém, ou alguém pode invadir seu bot e fazer com que ele pratique más ações. Isso encerra nossa conversa com o BotFather por enquanto no código!

---

O TOKEN - Use this token to access the HTTP API:

numeros-e-letras-do-meu-token

---

Agora você pode adicionar uma descrição, sobre seção e foto de perfil para o seu bot, consulte /help para obter uma lista de comandos. A propósito, quando você terminar de criar seu bot legal, execute um ping no nosso Suporte de Bot se quiser um nome de usuário melhor para ele. Apenas verifique se o bot está totalmente operacional antes de fazer isso.

---

Meumeu

username: meumeubot

t.me/meumeubot

---

Mantenha seu token seguro e armazene-o com segurança, ele pode ser usado por qualquer pessoa para controlar seu bot. Para uma descrição da API Bot, consulte esta página:

https://core.telegram.org/bots/api

---

O bot pode funcionar no Linux.

Configurando as gemas e o diretório do bot.

Abra o terminal e faça mkdir telegram-bot.

Isso cria um novo diretório para os arquivos do seu bot.

É melhor mantê-los confinados em uma pasta para facilitar o gerenciamento. Navegue para o diretório com cd telegram-bot e faça o seguinte:

mkdir ~/Documentos/telegram-bot

cd ~/Documentos/telegram-bot

touch Gemfile

touch bot.rb

atom Gemfile

atom bot.rb

---

Oneliner?

mkdir ~/Documentos/telegram-bot; cd ~/Documentos/telegram-bot ; touch Gemfile; touch bot.rb; atom Gemfile ; atom bot.rb

---

OBS:

Isso cria dois arquivos em branco, um para especificar as gemas necessárias e outro para o código do bot. O último comando abre esses dois arquivos.

---

CONTINUANDO...

---

No arquivo Gemfile cole o seguinte:

source 'https://rubygems.org'
gem 'telegram_bot'

---

Isso diz ao Bundler para pegar a interface do Ruby para a API do Telegram no rubygems.org. Para concluir a configuração da gema, volte ao seu terminal e digite bundle. É isso para a configuração das gemas, agora estamos finalmente entrando no código.

---

Codificando seu primeiro bot de Telegram

---

O código real que será executado constantemente no servidor está dentro do bot.rb. ele está vazio no momento, mas aqui vamos vincular a gema do Telegram que acabamos de agrupar e criar um bot. Não há muito código para escrever.

---

Ele examina o que cada parte do código faz e o escreve à medida que avançamos.

require 'telegram_bot'
token = 'TOKEN'
bot = TelegramBot.new(token: token)

(Substitua o TOKEN pelo token da API que você copiou do BotFather)

---

O Ruby facilita bastante adivinhar o que o código fará. As três linhas acima adicionam a funcionalidade bot do Telegram ao seu arquivo e, em seguida, criam um novo objeto bot da classe TelegramBot, autenticado com seu token para que o programa saiba para onde enviar os dados.

A próxima parte é um grande loop. Parece confuso no começo, mas é fácil de separar.

---

bot.get_updates(fail_silently: true) do |message|
puts "@#{message.from.username}: #{message.text}"
command = message.get_command_for(bot)

message.reply do |reply|
case command
when /start/i
reply.text = "Tudo que posso fazer é dizer Olá. Tente o comando /greet."
when /greet/i
reply.text = "Olá, #{message.from.first_name}. 🤖"
else
reply.text = "IEu não tenho idéia do que #{command.inspect} significa."
end
puts "enviando #{reply.text.inspect} to @#{message.from.username}"
reply.send_with(bot)
end
end

---

A primeira linha diz ao bot para continuar ouvindo comandos. E, quando recebe um comando para passá-lo para a variável de mensagem.
A linha de put registra o comando no seu terminal para que você possa ver o que está acontecendo enquanto o bot é executado.
As ações de resposta do bot são armazenadas em uma declaração de caso.
A entrada da instrução de caso é alimentada a partir da variável de mensagem depois de limpa pelo método get_command_for da gema.
O texto de resposta do bot é definido dependendo do comando armazenado e, finalmente, enviado com send_with antes de o loop reiniciar. Com essa configuração, agora você pode encontrar seu bot no Telegram, enviar os comandos /start e /greet e assisti-lo em ação.

---

Para fazer isso, salve as alterações no Atom e execute:

ruby bot.rb

No terminal. Enquanto esse terminal estiver aberto e funcionando, seu bot enviará respostas!

---

Personalizando seu novo e brilhante bot - O bot que você acabou de criar é bom, mas não é muito interessante.

Os bits básicos estão lá, o que significa que você pode trocá-los e ampliá-los facilmente.

As partes a serem observadas ao personalizar são as linhas when/ command/ i e o texto entre as aspas nas linhas reply.txt.

Essas são as entradas que seu bot aceita e as mensagens que ele envia de volta como respostas. Portanto, se você quiser dizer algo diferente como resposta ao comando /greet, altere o valor de reply.text abaixo da linha de comando greet (quando /greet /i).

---

Aqui está uma variação que você pode tentar:

when /greet/i
greetings = ['bonjour', 'hola', 'hallo', 'sveiki', 'namaste', 'salaam', 'szia', 'halo', 'bom dia']
reply.text = "#{greetings.sample.capitalize}, #{message.from.first_name}!"

---

Aqui, criei uma matriz com algumas maneiras diferentes de dizer olá e, em seguida, adicionei uma à mensagem aleatoriamente usando o método de amostra

---

Transformando seu bot em algo incrível - você pode adicionar quantos comandos, respostas e recursos quiser ao bot.

A maior parte é imaginação e muito pesquisa em ferramentas de busca na web à medida que avança.

Se você quiser aprender muitas coisas aplicáveis a esse bot, comece com Learn Ruby the Hard Way para entender o básico do idioma.

Com um pouco de prática e uma dependência saudável do StackOverflow, você poderá:

Conectar outras APIs para extrair dados de fontes como Airtable, Slack, RSS ou Twitter.

É aí que entra a funcionalidade realmente interessante - você pode criar um bot que atua como uma interface de conversação para um conjunto de dados ou recursos, como um bot que retorna resultados de pesquisa do Twitter ou postagens no Slack.

---

ARMAZENE A ENTRADA DO USUÁRIO EM UM BANCO DE DADOS.

Você pode criar um bot do Telegram que ofereça suporte automatizado aos usuários ou responda a perguntas e armazene seus endereços de e-mail em um banco de dados. A gema Sequel facilita a criação, gravação, edição e leitura de bancos de dados.

Construa uma aventura de texto. Colossal Cave Adventure, um dos primeiros jogos de terminal, foi transportado para o Telegram como um bot.

Se você precisar de inspiração, poderá ler o código-fonte bot de outras pessoas e verificar uma lista de bots do Telegram. Tente descobrir como eles funcionam e recriá-los como prática.

---

Executando seu bot 24/7 - No momento, seu bot está sendo executado no seu terminal no seu computador.

Tudo bem até que você precise reiniciar o computador, o wi-fi cai ou o computador entra no modo de suspensão. Quando isso acontece, ele encerra o processo do bot e os usuários não recebem uma resposta dele. O processo de mover seu bot de um ambiente de desenvolvimento (seu computador em que você usou o Atom para gravá-lo) para um ambiente de produção (um servidor) é conhecido como implantação.

---

Existem algumas opções para implantar seu bot, mas nos dois casos começaremos fazendo o upload dos arquivos no Bitbucket.

O Bitbucket permite que você use o git, um sistema de controle de versão que ajuda você a fazer e acompanhar com segurança as alterações no código do seu bot.

Ao fazer o upload dos arquivos do seu bot para o Bitbucket, você pode usar o Bitbucket como uma maneira de capturar os arquivos do bot quando estiver conectado ao host. Inscreva-se no Bitbucket e crie um novo repositório.

---

Com o terminal aberto e no mesmo diretório que o código-fonte do seu bot, digite o seguinte:

git init
git add .
git commit -m 'initial commit'

---

Agora, siga as instruções mostradas pelo Bitbucket depois de criar o novo repositório. Os meus são: Depois de inserir esses dois comandos destacados no meu terminal e fornecer a minha senha do Bitbucket quando solicitado, os arquivos são enviados. Com seu código vivendo na nuvem, é hora de escolher uma maneira de implantar.

---

Implantando com um Raspberry Pi - Este pequeno computador Raspberry Pi na minha mesa hospeda vários bots - Um Raspberry Pi é um ótimo investimento se você planeja criar e implantar bots - você pode obter um a partir de US $ 7 mais o preço de um cartão SD. Ele usa muito pouca energia, para que você possa mantê-la ligada o tempo todo e não se preocupar com o custo. Pode ser tentador comprar um pacote que vem com teclado, mouse e estojo, mas tudo o que você precisa é de um carregador USB, cartão SD, cabo Ethernet e o próprio computador. Você provavelmente já tem a maioria dessas coisas em seu escritório. Implantando com um servidor em nuvem - Você não precisa possuir o computador em que seu bot está executando, pode usar a memória e a energia da máquina de outra pessoa para executá-lo remotamente. As soluções populares para implantação na nuvem incluem Amazon Web Services (AWS), DigitalOcean e Heroku.

---

Dos três, os mais novos acho que são são DigitalOcean e Heroku. Ao se inscrever no DigitalOcean e criar uma nova conta, você aprenderá como se conectar ao servidor via SSH e iniciar o console. A partir daqui, é o mesmo processo que você fez na sua máquina local, independentemente do servidor que você está usando.

No final, parece ser, vamos para a implantação real.

---

O processo de implantação - em um servidor novo - seja um Raspberry Pi ou um servidor em nuvem como o Digital Ocean - você precisará instalar Ruby, Bundler e Git:

sudo apt-get update
sudo apt-get upgrade
curl -L https://get.rvm.io | bash -s stable --ruby
sudo apt-get install bundler
sudo apt-get install git

---

Em seguida, crie um novo diretório para o seu bot, navegue até lá e faça o download dos arquivos do Bitbucket com os seguintes comandos:

mkdir bots
cd bots
git clone https://[email protected]/meu_repo_bitbucket/telegram-bot.git

---

Lembre-se de substituir o URL acima (https://meu_repo_bitbucket…) pelo URL do repositório do seu bot no Bitbucket.

Você encontrará todo o comando clone por meio do Bitbucket, portanto não precisará fazer isso manualmente. Em seguida, digite bundle para instalar as dependências da gem e, em seguida, ruby bot.rb para iniciar a execução permanente do bot.

---

Nota:

Se você estiver acessando seu servidor via SSH, precisará executar o bot com:

nohup ruby bot.rb

Para garantir que o bot não pare de funcionar quando a sessão SSH for encerrada. Agora você está livre para fechar a janela do terminal, seguro de que seu bot está emitindo um bipe silencioso em segundo plano. Isso conclui sua primeira facada em um bot do Telegram. Ao longo do caminho, você aprendeu sobre o terminal, Ruby, gems, a API do Telegram e como implantar um bot em um servidor.

---

Converter webm para mkv

#!/usr/bin/env bash

# Titulo: conv_lt_webm_to_mkv.sh
# Autor: claytu_dinamitti_1000%
# Versão: 0.0
# Email:
# Site:
# Data: 23-04-2020_11:10:14
# Distro: GNU/Linux
# Exemplo de uso:
# Objetivo:
# Variaveis:
# TODO - indica uma tarefa a ser feita
# FIXME - indica um bug conhecido que precisa ser arrumado
# XXX - notícia, chama a atenção

# -------------------- # CONVERTENDO DE WEBM PARA MKV

for f in *.webm; do
ffmpeg -i "$f" -map_metadata -1 -c:v copy -c:a copy -map 0 "${f%.*}.mkv"
done

# -------------------- # Ajusta título

for f in *.mkv; do
mkvpropedit "$f" -e info -s title="${f::-4}"
done

# -------------------- # sobrescrever metadata de mkv

for f in *.mkv; do
mkvpropedit "$f" --tags all: # remove a metadata?
done

echo -e "\n\e[1;33;40m*** Feito! ***\e[0m\n"

# fim do script

Bash script vídeo ou áudio

#!/usr/bin/env bash

############################

# Titulo: test_video_ou_audio.sh
# Autor: claytu_tir_1000%
# Versão: 0.0
# Email:
# Site:
# Data: 23-04-2020_10:05:28
# Distro: GNU/Linux
# Exemplo de uso:
# Objetivo: usar ferramenta para obter arquivo de video ou de áudio
# Variaveis:
# TODO - indica uma tarefa a ser feita
# FIXME - indica um bug conhecido que precisa ser arrumado
# XXX - notícia, chama a atenção

############################

clear # limpa a tela

# --------------------------------------- #

echo -e "\e[1m*** Ferramenta para download com youtube-dl ***\e[0m"

# --------------------------------------- #

read -p "Digite a URL : " URL # armazena URL

echo -e "Você digitou $URL" # imprime a URL

# --------------------------------------- #

echo -e "\e[1m*** Baixar vídeo digite (1) ou áudio (2) ***\e[0m"
# oferece duas opções

while : # loop while
do # fechamento de do é done
read DIGITE # armazena digito 1 ou 2
case $DIGITE in # caso o digito seja...
# fechamento de case é esac

# --------------------------------------- #

1) # dígito 1 executa...
echo -e "Você digitou: $DIGITE, baixando vídeo... "

firejail youtube-dl -cwi "$URL" # comando 1

break # sai após executar comando
;;

# --------------------------------------- #

2) # dígito 2 executa...
echo -e "Você digitou $DIGITE, baixando áudio... "

firejail youtube-dl --extract-audio --audio-format mp3 "$URL" # comando 2

break # sai após executar comando
;;

# --------------------------------------- #

*)
echo -e "Desculpe eu só entendo 1 e 2." # se não for nem 1 nem 2...

;;
esac # fechamento de case e sai

# --------------------------------------- #

done # fechamento de do e acabou

# --------------------------------------- #

echo -e "\n\e[1;33;40m*** E tá tudo resolvido! ***\e[0m\n" # mensagem final

# --------------------------------------- #

# fim do script

Linux como verificar a soma de verificação de uma ISO do Linux e confirmar se ela não foi adulterada?


Linux como verificar a soma de verificação de uma ISO do Linux e confirmar se ela não foi adulterada? Como este processo funciona? O processo de verificação de uma ISO é um pouco complexo. Uma soma de verificação é um dado de tamanho pequeno de um bloco de dados digitais com o objetivo de detectar erros que podem ter sido introduzidos durante sua transmissão ou armazenamento. Portanto, uma soma de verificação é uma longa sequência de dados que contém várias letras e números. Você geralmente os encontra ao baixar arquivos da Web, por exemplo Imagens de distribuição do Linux, pacotes de software etc. O uso mais comum de somas de verificação é para verificar se um arquivo baixado está corrompido.

---

Como um checksum é gerado?

Cada soma de verificação é gerada por um algoritmo de soma de verificação. Sem entrar em detalhes técnicos, digamos que ele pega um arquivo como entrada e gera o valor da soma de verificação desse arquivo.

---

Você fará o download do arquivo ISO do Linux no site da distribuição Linux - ou em outro lugar - como de costume.

Você fará o download de uma SOMA DE VERIFICAÇÃO e de sua ASSINATURA DIGITAL no site da distribuição Linux. Podem ser dois arquivos TXT separados, ou você pode obter um único arquivo TXT contendo os dois dados. Você receberá uma chave PGP pública pertencente à distribuição Linux. Você pode obter isso no site da distribuição Linux ou em um servidor-chave separado, gerenciado pelas mesmas pessoas, dependendo da sua distribuição Linux. Você usará a chave PGP para verificar se a assinatura digital da soma de verificação foi criada pela mesma pessoa que fez a chave; nesse caso, os mantenedores dessa distribuição Linux. Isso confirma que a soma de verificação em si não foi violada. Você gera a soma de verificação do seu arquivo ISO baixado e verifica se ele corresponde ao arquivo TXT da soma de verificação que você baixou. Isso confirma que o arquivo ISO não foi adulterado ou corrompido. O processo pode diferir um pouco para diferentes ISOs, mas geralmente segue esse padrão geral. Por exemplo, existem vários tipos diferentes de somas de verificação. Tradicionalmente, as somas MD5 são as mais populares. No entanto, as somas do SHA-256 agora são mais frequentemente usadas pelas distribuições modernas do Linux, pois o SHA-256 é mais resistente a ataques teóricos. Aqui é sobre as somas do SHA-256 aqui, embora um processo semelhante funcione para as somas do MD5. Algumas distribuições Linux também podem fornecer somas SHA-1, embora sejam ainda menos comuns. Da mesma forma, algumas distros não assinam suas somas de verificação com o PGP.

Você só precisará executar algumas etapas, mas o processo é muito mais vulnerável. Afinal, se o invasor puder substituir o arquivo ISO para download, ele também poderá substituir a soma de verificação. Sim, mas não a soma do site oficial. Tendo a soma do site oficial para comparar com a soma da iso baixada acredito que é seguro. Eu só faço o que posso com as ferramentas que os desenvolvedores nos oferecem. Então o que escrevo aqui eu executo. mais que isto exede minhas capacidades.

---

Tem distros que você devia baixar o arquivo de soma de verificação sha256sum.txt e a chave PGP sha256sum.txt.gpg. Por exemplo o Linux Mint.

---

As FERRAMENTAS para verificar md5, sha1 e sha256 se chamam:

1) md5sum
2) sha1sum
3) sha256sum

---

O que precisamos:

1) a ISO

2) o arquivo de soma de verificação (sha256sum.txt).

3) o arquivo de assinatura digital da soma de verificação e a chave PGP (sha256sum.txt.gpg).

---

Então, mudava para a pasta para a qual foram baixados e executa:

1) gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 0FF405B2

2) sha256sum --check sha256sum.txt

---

Mas tem uma maneira mais fácil oferecida pelas distros Linux hoje em dia se na página oficial de uma distro ela oferece por exemplo um sha256sum:

df43424db9bfc5d2d28b7c64326716001f1780053d95a0c122a514b59a198544

Eu copio e guardo este sha256sum. Agora devo obter a soma sha256sum da iso que baixei. Então eu abro o terminal onde está a iso que baixei e executo:

1) sha256sum nome_da_iso_que_baixei.iso

Se baixei uma iso chamada: ubuntu-mate-16.10-desktop-amd64.iso, eu uso a ferramenta sha256sum neste arquivo assim:

sha256sum ubuntu-mate-16.10-desktop-amd64.iso

Se a soma de verificação gerada corresponder à fornecida na página de download do Ubuntu MATE, isso significa que nenhum dado foi alterado durante o download do arquivo - em outras palavras, o arquivo baixado não está corrompido.

---

Se fosse MD5:

2) md5sum nome_da_iso_que_baixei.iso

E confiro os dois no olho mesmo.

---

Ou se baixei do site oficial o sha256sum.txt:

2) sha256sum --check sha256sum.txt

---

Com que precisão isso funciona? Se você está se perguntando com que precisão essas somas de verificação detectam arquivos corrompidos - se você excluir ou alterar mesmo um caractere de qualquer um dos arquivos de texto dentro da imagem iso, o algoritmo de soma de verificação gerará um valor totalmente diferente para a imagem alterada. E isso definitivamente não corresponderá à soma de verificação fornecida na página de download.

---

Linux comando mv exemplos

Linux comando mv exemplos

---

O comando mv no Linux é usado para mover e renomear arquivos e diretórios. O mv é um dos comandos obrigatórios no Linux. mv significa movimento e é essencialmente usado para mover arquivos ou diretórios de um local para outro. A sintaxe é semelhante ao comando cp no Linux, porém há uma diferença fundamental entre esses dois comandos. Você pode pensar no comando cp como uma operação de copiar e colar. Enquanto o comando mv pode ser equiparado à operação de recortar e colar. O que significa que, quando você usa o comando mv em um arquivo ou diretório, o arquivo ou diretório é movido para um novo local e o arquivo/diretório de origem não existe mais. É uma operação de recortar e colar, não é?

1) comando cp = copiar e colar

2) comando mv = recortar e colar

---

O comando mv também pode ser usado para renomear um arquivo. O uso do comando mv é bastante simples e, se você aprender algumas opções, ele se tornará ainda melhor.

mv file1.txt file.2.txt file3.txt target_directory

---

Você também pode usar padrões regex para mover vários arquivos correspondentes a um padrão. Por exemplo, no exemplo acima, em vez de fornecer todos os arquivos individualmente, você também pode usar o padrão regex que corresponde a todos os arquivos com a extensão .txt e os move para o diretório de destino.

mv *.txt target_directory

---

Como renomear um arquivo - Um uso essencial do comando mv é renomear arquivos. Se você usar o comando mv e especificar um nome de arquivo no destino, o arquivo de origem será renomeado para o arquivo de destino.

mv source_file target_directory/target_file

---

No entanto, se o target_file já existir, ele será sobrescrito sem perguntar. O que significa que o conteúdo do arquivo de destino existente será alterado com o conteúdo do arquivo de origem. Você não é obrigado a fornecer um diretório de destino. Se você não especificar o diretório de destino, o arquivo será renomeado e mantido no mesmo diretório.

---

Lembre-se: Por padrão, o comando mv substitui se o arquivo de destino já existir. Esse comportamento pode ser alterado com a opção -n ou -i.

---

mv source_directory target_directory

---

No exemplo acima, se o diretório de destino existir, o diretório de origem inteiro será movido dentro do diretório de destino. O que significa que o source_directory se tornará um subdiretório do target_directory. Como renomear um diretório

---

Renomear um diretório é o mesmo que mover um diretório. A única diferença é que o diretório de destino ainda não deve existir. Caso contrário, o diretório inteiro será movido dentro dele, como vimos no diretório anterior.

mv source_directory path_to_non_existing_directory

---

Como lidar com a substituição de um arquivo enquanto se move? Se você estiver movendo um arquivo e já houver um arquivo com o mesmo nome, o conteúdo do arquivo existente será substituído imediatamente. Isso pode não ser o ideal em todas as situações. Você tem algumas opções para lidar com o cenário de substituição. Para evitar a substituição de arquivos existentes, você pode usar a opção -n. Dessa forma, o mv não substituirá o arquivo existente.

mv -n source_file target_directory

---

Você também pode usar a opção de atualização -u ao lidar com a substituição. Com a opção -u, os arquivos de origem serão movidos para o novo local apenas se o arquivo de origem for mais novo que o arquivo existente ou se ele não existir no diretório de destino.

---

Para resumir:

-i: Confirme antes de substituir
-n: Sem substituição
-b: Substituindo pelo backup
-u: Substitua se o arquivo de destino for antigo ou não existir.

---

Mas talvez você queira substituir alguns arquivos. Você pode usar a opção interativa -i e ela perguntará se você deseja substituir os arquivos existentes.

mv -i source_file target_directory
mv: overwrite 'target_directory/source_file'?

---

Você pode digitar y para substituir o arquivo existente ou n para não substituí-lo. Há também uma opção para fazer backups automáticos. Se você usar a opção -b com o comando mv, ele substituirá os arquivos existentes, mas antes disso, criará um backup dos arquivos substituídos.

---

mv -b file.txt target_dir/file.txt
ls target_dir
file.txt file.txt~

---

Por padrão, o backup do arquivo termina com ~. Você pode alterá-lo usando a opção -S e especificando o sufixo:

mv -S .back -b file.txt target_dir/file.txt
ls target_dir
file.txt file.txt.back

---

Você também pode usar a opção de atualização -u ao lidar com a substituição. Com a opção -u, os arquivos de origem serão movidos para o novo local apenas se o arquivo de origem for mais novo que o arquivo existente ou se ele não existir no diretório de destino.

Para resumir:

-i: Confirme antes de substituir
-n: Sem substituição.
-b: Substituindo pelo backup
-u: Substitua se o arquivo de destino for antigo ou não existir.

Como mover com força os arquivos. Se o arquivo de destino estiver protegido contra gravação, você será solicitado a confirmar antes de substituir o arquivo de destino. Para evitar esse prompt e substituir o arquivo imediatamente, você pode usar a opção force -f.

mv -f file1.txt target

---

Anotação rmvb para mp4

Testando um script bash para converter rmvb para mp4.

#!/usr/bin/env bash

#############################

# Titulo: conv_lt_rmvb_2_mp4.sh
# Autor: arceu_valenti_1000%
# Versão: 0.0
# Email:
# Site:
# Data: 15-04-2020_09:35:04
# Distro: GNU/Linux
# Exemplo de uso:
# Objetivo:
# Variaveis:
# TODO - indica uma tarefa a ser feita
# FIXME - indica um bug conhecido que precisa ser arrumado
# XXX - notícia, chama a atenção

#############################

function rmvb2mp4(){

clear

# ------------------------- #

# SOBREESCREVE METADATA 1

#echo "*** SOBREESCREVE METADATA 1 ***"

#for i in *.rmvb; do
# exiftool "$i" --tags all: # Não
#done

# ------------------------- #

# AJUSTA TITULO 1

echo "*** AJUSTA TITULO 1 ***"

for f in *.rmvb; do
ffmpeg -i "$f" -e info -s title="${f::-4}"
sleep 2
done

# ------------------------- #

# CONVERTE DE RMVB PARA MP4 SOBRESCREVE METADATA

echo "*** CONVERTE DE RMVB PARA MP4 SOBRESCREVE METADATA ***"

# for f in *.rmvb; do ffmpeg -i "$f" -map_metadata -1 -c:v copy -c:a copy -map 0 "${f%.*}.mp4"; done # NAO

# for f in *.rmvb; do ffmpeg -i "$f" -c:a copy "${f%.*}.mp4"; done # NAO

# Loop for simplificado:

# for %%G in (*.rmvb) do ffmpeg -i "%%~G" -c:v h264 -c:a aac "%%~nG.mp4" # SIM

# Este converte h264 video e aac audio. Estes codecs parecem ser
# bem comuns hoje em dia.

# O padrão do vídeo é CRF 23, enquanto o áudio deve ter 128k.
# Isso deve oferecer qualidade razoável em talvez um décimo da taxa de bits
# mostrado na imagem de 9300k, talvez abaixo de 1000k.

# ------------------------- #

for f in *.rmvb; do
ffmpeg -i "$f" -c:v h264 -c:a aac "${f%.*}.mp4"
done

# TRABALHO PESADO ESTA CONVERSÃO
# Oneliner?

# for f in *.rmvb; do ffmpeg -i "$f" -c:v h264 -c:a aac "${f%.*}.mp4"; done

# ------------------------- #

#for f in *.rmvb; do
# ffmpeg -i "$f" -map_metadata -1 -c:v copy -c:a copy "${f%.*}.mp4"
# sleep 3
# ls -ltF | head
#done

# ONELINER?

# for f in *.rmvb; do ffmpeg -i "$f" -map_metadata -1 -c:v copy -c:a copy "${f%.}.mp4"; sleep 3; ls -ltF | head; done

# for f in *.rmvb; do ffmpeg -i "$f" -c:a copy "${f%.}.mp4"

# ------------------------- #

# QUEBRA DE LINHA

# for f in *.rmvb; do ffmpeg -i "$f" \
# -map_metadata -1 -c:v copy \
# -c:a copy "${f%.}.mp4"; \
# sleep 3; ls -ltF | head; \
# done

# ------------------------- #

# DELETA RMVB

for file in *.mp4; do
ls -lt | head
read -p "Sair: Ctrl+c. Deletar rmvb? Para isto, tecle Enter : "
rm -f "$file"
done

# ------------------------- #

# SOBREESCREVE METADATA 2

echo "*** SOBREESCREVE METADATA 2 ***"

for i in *.mp4; do
exiftool "$i" --tags all:
done

# ------------------------- #

# AJUSTA TITULO 2

echo "*** AJUSTA TITULO 2 ***"

for f in *.mp4; do
ffmpeg -i "$f" -e info -s title="${f::-4}"
sleep 2
done

# ------------------------- #

# EXIBE METADATA

echo "*** EXIBE METADATA ***"

for f in *.mp4; do
exiftool "$f"
done

# ------------------------- #

echo "Feito!"

}

rmvb2mp4

# NOTAS:
# ffmpeg -i input.mp4 -map_metadata -1 -c:v copy -c:a copy output.mp4

# fim do script

Loop for exemplo prático

Loop for exemplo mp3 para wav

Um exemplo prático - para loops, faça mais do que repetir listas de números.

Por exemplo, use a saída de outros comandos como a lista. O exemplo a seguir mostra como converter arquivos de áudio de MP3 para WAV:

---

#!/usr/bin/env bash

###################

# nome: lt_conv_mp3_2_wav.sh
# objetivo converter mp3 para wav

###################

function mp32wav () {

# ------------------ #

clear

# ------------------ #

# sobrescreve metadata loop

for i in *.mp3; do
exiftool -all= -overwrite_original -ext "$i" .
done

# ------------------ #

# melhora ganho de audio mp3 loop

for i in *.mp3; do
mp3gain -c -r "$i"
done

# ------------------ #

# CONVERTE PARA WAV loop

for i in *.mp3; do
ffmpeg -i "$i" "${i/%mp3/wav}"
done

# ------------------ #

# sobrescreve metadata

for i in *.wav; do
exiftool -all= -overwrite_original -ext "$i" .
done

}

mp32wav

# fim do script

---

A lista neste exemplo é todo arquivo com a extensão .MP3 na pasta atual e a variável é um arquivo. O comando converte o arquivo MP3 em WAV. No entanto, você provavelmente precisará instalar esta ferramenta usando um gerenciador de pacotes primeiro.

Zipar uma pasta usando linha de comando no Linux

Zip uma pasta na linha de comando do Linux

---

A sintaxe para usar o comando zip é bastante direta.

zip [option] arquivo_zip_a_criar.zip entrada1 entrada2

---

Embora possa haver várias opções, aqui o básico para não ter confusão.

Se o único objetivo é criar uma pasta zip a partir de vários arquivos e diretórios, use um comando como este.

zip -r nome_do_folder.zip arquivo1 diretorio1

---

A opção -r será recursiva em diretórios e compactará seu conteúdo também. A extensão .zip nos arquivos de saída é opcional, pois .zip é adicionado por padrão.

Você pode ver os arquivos sendo adicionados à pasta compactada durante a operação zip.

---

Você pode usar a opção -e para criar uma pasta zip protegida por senha no Linux.

---

Você nem sempre está restrito ao terminal para criar arquivos compactados. Você pode fazer isso graficamente também com um gerenciador de compactação. Instale-o pelo software center do seu sistema operacional GNU/Linux.

---

Sintaxe:

zip [option] arquivo_zip_a_criar.zip entrada1 entrada2

---

Comando:

zip -r zipado_pacote.zip meu_arquivo1 meu_diretorio1

---

Onde:

ARQUIVO ZIP A SER CRIADO: zipado_pacote.zip

ARQUIVOS QUE IRÃO SER ZIPADOS: meu_arquivo1 meu_diretorio1

---

Um script para zipar ~/bin:

#!/usr/bin/env bash

# Titulo: test_zip_bin.txt.sh
# Autor: claytu_dinamitti_1000%
# Versão:
# Email:
# Site:
# Data:
# Distro:
# Exemplo de uso:
# Objetivo:
# Variaveis:
DDT=`date +%d-%m-%Y`
# TODO - indica uma tarefa a ser feita
# FIXME - indica um bug conhecido que precisa ser arrumado
# XXX - notícia, chama a atenção

# zip [option] nome_arq_zipado entrada1 entrada2

function zipbin () {

zip -r zip_bin_$DDT.zip ~/bin

}

zipbin

# fim do script

---