init public scripts repo

This commit is contained in:
jp.av.dev 2022-04-23 00:59:43 -04:00
commit 3c9aa27076
8 changed files with 630 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
sistema.sh
test/

238
README.md Normal file
View File

@ -0,0 +1,238 @@
# Scripts Publicos
Selección de scripts de autoria propia
- [Exploracion de Logs](#buscalog)
- [Funciones Git](#funciones-git)
- [Funciones Python](#funciones-python)
- [Consola de Python a color](#Interprete-a-color)
- [Otros](#otros)
- [Lol laucher y debug](#rito-pls)
> NOTA: Funciones ejecutadas con ***alias***
> ej: `alias mi_alias='/ruta/a/scritps/script funcion <arg(s)>'`
----
# Buscalog
Script a color, para explorar logs en `/var/log/` y/o directorios agregados en `~/.config/custom_log_dirs`.
ej `custom_log_dirs`:
```txt
/ruta/a/directorio
/ruta/a/otro/directorio
/ruta/a/otro/directorio/mas
```
> nombres de directorios sin espacios ej `/ruta/a/dir/deLogs`
> nombres de directorios terminan en `\n`
Lista los log disponibles (con permiso de lectura) en los directorios mencionados.
`./buscalog.sh listLog`
```txt
Selección de Logs :
-------------------
0) logX
1) logXY
2) logZ
3) logZX
4) custom/dir/logA
5) custom/dir/logB
6) otro/custom/dir/logC
s) Salir
Ver log:
```
Muestra el contenido del log 'seleccionado' en el menu utilizando **bat**, **bat-cat** o **cat**.
```txt
.... .... ...
.... contenido del log
.... .... ...
```
Pie de página con información del log actual, patrón de búsqueda o búsqueda inversa y
cantidad de resultados o entradas del log.
```txt
| LOG: /var/log/milog.log | BUSQUEDA: error | ECONTRADOS: 11 |
```
Opciones en vista del log
| Opción | Detalle |
| - | - |
| **`v`** volver | Vuelve a la lista principal de logs
| **`r`** recargar | Actualiza el log en vista
| **`b`** buscar | Búsqueda en el log (escapar caracteres de escape ej. `\\s`)
| **`B`** busqueda inversa | Busqueda inversa (escapar caracteres de escape)
| **`s`** salir | Termina el programa
```txt
| v)olver | r)ecargar | b)uscar | B)usqueda inversa | s)alir |
Opción:
```
Script: [buscalog.sh](./buscalog.sh)
----
# Funciones Git
Script a color con funciones git y creador de *READMES* en sub-directorios.
## gitUser()
Inicia repositorio como usuario especificado en `~/.config/.gitidents`
ej. `.gitidents`
```txt
UsuarioGit1 user1@git.org keyUser1
UsuarioGit2 user2@git.org keyUser2
UsuarioGit3 user3@git.org keyUser3
UsuarioGit4 user4@git.org keyUser4
```
> llaves ssh en `~/.ssh/keys/`
### Listar usuarios agregados
`./gitfun.sh gitUser`
```txt
Debes ingresar un usuario válido!
Identidades en ~/.config/.gitidents :
-> UsuarioGit1
-> UsuarioGit2
-> UsuarioGit3
-> UsuarioGit4
m) manual
╮(︶▽︶)╭
```
### Iniciar repositorio como
`./gitfun.sh gitUser UsuarioGit3`
```txt
( ̄▽ ̄) Iniciando repositorio de UsuarioGit3
hint: Using 'master' as the name for the initial branch...
hint: ... ...
hint: ... ...
hint: git branch -m <name>
Initialized empty Git repository in /tmp/testi/.git/
```
### Iniciar repo manualmente
Solicita entrada de nombre, email y llave ssh.
`.gitfun gitUser m` o `.gitfun gitUser manual`
```txt
Nombre : Usuario Manual
Correo : mail@user.git
SSH key: llaveSSH
Usuario: Usuario Manual Correo: mail@user.git Llave: llaveSSH
Iniciar repositorio con estos valores? (s/n/q):
```
Script: [gitfun.sh](./gitfun.sh)
----
# Funciones Python
## pyVirtEnvSel()
Lista, crea entornos virtuales, copia al portapapeles la orden para activarlo.
### Lista entornos virtuales
Del directorio **`PyVirtEnvDir`**, especificado en el script.
`./pythonfun.sh pyVirtEnvSel`
```txt
Entornos Virtuales Python:
0) virtEnv
1) virtEnv1
2) virtEnv2
3) virtEnv3
c) Crear
q) Salir
Ingresa una opción. ->
```
### Crea entorno virtual
ej. ***entornoVirtual5***
```
Crear nuevo entorno
Nombre del entorno -> entornoVirtual5
Entorno virtual python: [entornoVirtual5] Creado 🐍️
```
### Copia al portapapeles el entorno seleccionado
```txt
Orden copiada en portapapeles:
--------------------------------------------------------------------
source /ruta/a/directorio/virtual_envs/entornoVirtual5/bin/activate
--------------------------------------------------------------------
```
Otras funciones:
- \_pip()
Uso del modulo **pip_search** como `pip search <busqueda>`
- pyDebug()
*Debugear* archivo `./pythonfun pyDebug <archivo.py>`
- pyMarkdown()
Markdown para terminal `./pythonfun pyMarkdown <archivo.md>`
- pyMicroCalc()
Micro calculadora, ejs. `./pythonfun pyCalc 1+1`, `./pythonfun pyCalc "(1+1)/2"`
Script: [pythonfun.sh](./pythonfun.sh)
### Interprete a color
Color en la consola de python con módulo **rich**. [pyRichRepl.py](./pyRichRepl.py)
----
# Otros
| Funcion | Explicación |
| - | - |
|`Caldera()` | Lanza xfce terminal y corre el script [caldera.py](https://gitea.kickto.net/SyDeVoS/Caldera-ino/src/branch/master/scripts#python)|
|`Termo()` | Lanza xfce terminal y corre el script [caldera.sh](https://gitea.kickto.net/SyDeVoS/Caldera-ino/src/branch/master/scripts#bash)|
|`yutu()` | Busca video pasado como argumento, instancia mpv con el resultado <br> ej. `./otros.sh yutu <video a buscar>`|
|`Neo()` | 'Envoltorio' para neofetch <br> `./otros.sh Neo -h` lista logos disponibles <br>`./otros.sh Neo <logo>` ejecuta neofetch con el logo especificado.|
### covStats()
Estadisticas covid Chile
`./otros.sh covStats`
```txt
Estadisticas COVID Chile 🇨🇱️
============================
Muertes totales : 0.29 %
Muertes contagio: 1.62 %
----------------------------
Contagios : 3,541,792
Activos : 125,059
Recuperados : 3,359,382
Muertes : 57,351
----------------------------
```
Script [otros.sh](./otros.sh)
----
# Rito pls
Lanza instancia de [kitty](https://sw.kovidgoyal.net/kitty/) terminal, con 3 splits (ventanas según creador).
Layout tall:
- Ventana 1: `bpytop`
- Ventana 2: `tail -f debug.log`
- Ventana 3: Lanza league of legends, muestra información del proceso
Utilidad para monitorear procesos con bpytop, y rastreo de informes/errores en logs de Lutris y Lol.
[ritopls](./ritopls): `kitty --start-as maximized --session ritopls &`

116
buscalog.sh Executable file
View File

@ -0,0 +1,116 @@
#!/usr/bin/env bash
declare -a LOG_DIRS
declare -a customLogDirs
LOGBASEDIR='/var/log';
CUSTLOGDIRS="$HOME/.config/custom_log_dirs";
ConT=0;
while read -a LINEA; do
customLogDirs+=($LINEA)
done < $CUSTLOGDIRS
while read -a LINEA; do
[[ -r "${LINEA}" ]] && LOG_DIRS[$ConT]="${LINEA}" && ((++ConT))
done <<< $(\ls -U ${LOGBASEDIR}/*.log 2>/dev/null &&
for dir in "${customLogDirs[@]}"; do \ls -U $dir/*.log 2>/dev/null; done; )
listLog(){
clear
local cont=0
printf '\n \e[1;32mSelección de Logs :\n'
printf ' %s\e[0m\n' "-------------------"
for str in ${LOG_DIRS[@]}; do
printf ' \e[1;34m%s)\e[0m \e[0;32m%s \e[0m\n' "$cont" "${str}" | \
sed 's/\/var\/log\///g ; s/\.log//g'
((++cont))
done
printf ' %bs)%b Salir%b\n\n' "\e[1;34m" "\e[1;32m" "\e[0m"
local index=${#LOG_DIRS[*]}
while :; do
printf '%b Ver log:%b ' "\e[1;34m" "\e[0m"
read -p '' REPLY
case $REPLY in
s) exit 0 ;;
[0-9]|[0-9][0-9])
[[ $REPLY -lt $index ]] &&
showLog "${LOG_DIRS[$REPLY]}" ||
printf '%bOpción inválida%b\n' "\e[0;31m" "\e[0m"
;;
*) printf '%bOpción inválida%b\n' "\e[0;31m" "\e[0m";;
esac
done
}
showLog(){
clear
local SEP='\e[1;37m|'
local TITL='\e[1;32m'
currentLog="${1}"
local nroResults="$(grep -Eic '' "${currentLog}")"
if [[ -e /usr/bin/batcat ]]
then \batcat --style grid "${currentLog}"
elif [[ -e /usr/bin/bat ]]
then \bat --style grid "${currentLog}"
else
cat "${currentLog}"
fi
printf '\n\e[0;40m%b LOG: %b%s %b ' "${SEP}" "${TITL}" "${1}" "${SEP}"
printf 'ENTRADAS: %b%s %b\e[0m' "${TITL}" "${nroResults}" "${SEP}"
logMenu "${currentLog}"
}
logResults(){
clear
local SEP='\e[1;37m|'
local TITL='\e[1;32m'
currentLog="${1}"
if [ $invbusq -gt 0 ]; then
local TITBUS='BUSQ. INVERSA'
local nroResults="$(grep -Eivc "${2}" "${1}")"
grep -Eiv --color=auto "$2" "${1}"
else
local TITBUS='BUSQUEDA'
local nroResults="$(grep -Eic "${2}" "${1}")"
grep -Ei --color=auto "$2" "${1}"
fi
printf '\n\e[0;40m%b LOG: %b%s %b ' "${SEP}" "${TITL}" "${1}" "${SEP}"
printf '%s: %b%s %b ' "${TITBUS}" "${TITL}" "${2}" "${SEP}"
printf 'ECONTRADOS: %b%s %b\e[0m' "${TITL}" "${nroResults}" "${SEP}"
logMenu "${currentLog}"
}
logMenu(){
current_log="${1}"
local SEP='\e[1;30m|'
local IND='\e[1;34m'
local TITL='\e[0;32m'
printf '\n %b%b v)%bolver %b' "${SEP}" "${IND}" "${TITL}" "${SEP}"
printf ' %br)%becargar %b' "${IND}" "${TITL}" "${SEP}"
printf ' %bb)%buscar %b' "${IND}" "${TITL}" "${SEP}"
printf ' %bB)%busqueda inversa %b' "${IND}" "${TITL}" "${SEP}"
printf ' %bs)%balir %b\n' "${IND}" "${TITL}" "${SEP}"
while :; do
printf '%bOpción:%b' "\e[1;34m" "\e[0m"
read -p " " REPLY1
case ${REPLY1} in
v) listLog ;;
b) printf '%bBuscar:%b' "\e[1;34m" "\e[0m"
read -p ' ' QUERY
invbusq=0
logResults "${current_log}" "${QUERY}"
;;
B) printf '%bBusqueda inversa:%b' "\e[1;34m" "\e[0m"
read -p ' ' QUERY
invbusq=1
logResults "${current_log}" "${QUERY}"
;;
r) showLog "${currentLog}" ;;
s) exit 0 ;;
*) printf '%bOpción inválida%b\n' "\e[0;31m" "\e[0m";;
esac
done
}
"$@"

88
gitfun.sh Executable file
View File

@ -0,0 +1,88 @@
#!/usr/bin/env bash
# Script para iniciar y configurar repositorios Git
REd="\e[31m"; GRn="\e[32m"; ORn="\e[33m";
FND="\e[40m"; RED="\e[1;31m"; GRN="\e[1;32m";
MGNT="\e[1;35m"; IND="\e[1;34m"; RST="\e[0m";
iniciarepo() {
printf '\n%b %b( ̄▽ ̄)%b Iniciando ' "${FND}" "${MGNT}" "${GRN}"
printf 'repositorio de %b%s%b\n\n' "${IND}" "${1}" "${RST}"
git init &&
git config --local user.name "$1" &&
git config --local user.email "$2" &&
git config --local core.sshCommand "ssh -i ~/.ssh/keys/${3} -F /dev/null"
}
gitUser(){
if [ -e $HOME/.config/.gitidents ]; then
GitIdents=$HOME/.config/.gitidents
else
printf '%bArchivo no encontrado!: %b%s~/.config/.gitidents ' \
"${RED}" "${RST}${GRn}" "${HOME}" && exit 0
fi
case "$1" in
m|manual)
manualGit ;;
*)
while read LINE; do
[[ $(printf '%s\n' "${LINE}" | cut -d' ' -f1) = ${1} ]] &&
identidad=($LINE) &&
iniciarepo "${identidad[0]}" "${identidad[1]}" "${identidad[2]}" &&
exit 0;
done < $GitIdents
printf '\n %bDebes ingresar un usuario válido!\n\n' "${RED}"
printf ' %b%bIdentidades en %b~/.config/.gitidents %b:' \
"${RST}" "${GRn}" "${RST}" "${GRn}"
for LINE in $(cut -d' ' -f1 $GitIdents); do
printf '\n\t%b-> %b%s' "${IND}" "${GRN}" "${LINE}"
done
printf '\n\t%bm) %bmanual\n' "${IND}" "${GRN}"
printf '\n\t%b╮(︶▽︶)╭ %b\n' "${MGNT}" "${RST}"
;;
esac
}
manualGit(){
#local salir=0
while :; do
printf '%bNombre :%b ' "${GRN}" "${RST}"
read -p '' nombre
printf '%bCorreo :%b ' "${GRN}" "${RST}"
read -p '' email
printf '%bSSH key:%b ' "${GRN}" "${RST}"
read -p '' sshkey
printf '\nUsuario: %b%s %b' "${GRN}" "${nombre}" "${RST}"
printf 'Correo: %b%s%b ' "${GRN}" "${email}" "${RST}"
printf 'Llave: %b%s%b\n' "${GRN}" "${sshkey}" "${RST}"
read -p'ok? s/n/q: ' confirma
case "${confirma}" in
s|S) iniciarepo "${nombre}" "${email}" "${sshkey}" && exit 0 ;;
q|Q) exit 0 ;;
esac
done
}
# Invoca 'touch README.md' en los directorios a un sub-nivel del actual
# ej. nombres de directorios: 'mi_dir/' 'mi dir con espacios/'
crea_readmes() {
for CARP in */
do
if [ -d "${CARP}" ]; then
if [ -f "${CARP}"README.md ]; then
printf '%b omitiendo %s %b\n' "${ORn}" "${CARP}" "${RST}"
else
touch "${CARP}"README.md &&
printf '%b%sREADME.md creado%b\n' "${GRn}" "${CARP}" "${RST}"
fi
else
print '%s %bno es un directorio válido%b\n' "${CARP}" "${REd}" "${RST}"
fi
done
}
"$@"

86
otros.sh Executable file
View File

@ -0,0 +1,86 @@
#!/usr/bin/env bash
Caldera(){
xfce4-terminal --geometry 27x22+850+350 --hide-toolbar --hide-borders --hide-menubar \
--working-directory $HOME/Arduino/Proyectos/termoRat/scripts/ \
--execute $HOME/Arduino/Proyectos/termoRat/scripts/caldera.py
}
Termo(){
xfce4-terminal --geometry 30x24+850+350 --hide-toolbar --hide-borders --hide-menubar \
--working-directory $HOME/Arduino/Proyectos/termoRat/scripts/ \
--execute $HOME/Arduino/Proyectos/termoRat/scripts/caldera.sh
}
Neo(){
Imprime_Logos(){
printf "LOGOS: "
awk '/ascii_distro/{flag=1;next} /ascii_bold/{flag=0} flag {print}' \
<<< "$(neofetch --help)" |
sed 's/^ */\t/'
}
case "${1}" in
"-h")
Imprime_Logos
;;
*)
clear && neofetch --ascii_distro "$1"
;;
esac
}
yutu(){
local BUSQUEDA="$*"
local BUSQUEDA="${BUSQUEDA// /+}"
mpv "https://youtube.com/$(curl -s "https://vid.puffyan.us/search?q=${BUSQUEDA}" | \
grep -Eo "watch\?v=.{11}" | head -n 1)" &
}
kaltest() {
[[ -n $1 ]] && local pmes=$1 || local pmes=0
[[ -n $2 ]] && local mesp=$2 || local mesp=$(date '+%Y')
cal -m -n $pmes -S $mesp
}
covStats(){
lolcat <<< $(
# Cache https
[ "$(stat -c %y ~/.cache/corona 2>/dev/null | cut -d' ' -f1)" != "$(date '+%Y-%m-%d')" ] &&
curl -s https://corona-stats.online?source=2 | \
sed -r "s/\x1B\[([0-9]{1,3}(;[0-9]{1,2})?)?[mGK]//g" > ~/.cache/corona
# Estadisticas covid Chile
declare Vars
Vars="$(grep "Chile" ~/.cache/corona |
sed "s/\s*//g ; s/║//g ; s/│/;/g " |
sed "s/(CL)//g" | awk -F';' '{print $3" "$7" "$5" "$8}')"
Contag=$(cut -d' ' -f1 <<< $(echo ${Vars}))
Recupe=$(cut -d' ' -f2 <<< $(echo ${Vars}))
Muerte=$(cut -d' ' -f3 <<< $(echo ${Vars}))
Activo=$(cut -d' ' -f4 <<< $(echo ${Vars}))
Murtio=$(echo "${Muerte}" | sed 's/,//g')
Conteg=$(echo $Contag | sed 's/,//g')
# Población Chile
PoblT=19678310
# Muertes
Mtota="$(python3 -c "print('{:.2f}'.format(100*$Murtio/$PoblT))")"
Mcont="$(python3 -c "print('{:.2f}'.format(100*$Murtio/$Conteg))")"
# Vista
printf '\n Estadisticas COVID Chile 🇨🇱️ \n'
printf ' ============================\n'
printf ' Muertes totales :\e[1;36m %s %%\e[0m\n' "$Mtota"
printf ' Muertes contagio:\e[1;32m %s %%\e[0m\n' "$Mcont"
printf '%s\n' " ----------------------------"
printf ' Contagios : %s \n Activos : %s \n Recuperados : %s \n Muertes :\e[1;32m %s \e[0m\n' \
"${Contag}" "${Activo}" "${Recupe}" "${Muerte}"
printf '%s\n\n' " ----------------------------"
)
}
"$@"

5
pyRichRepl.py Executable file
View File

@ -0,0 +1,5 @@
from rich import pretty
from rich.console import Console
pretty.install()
print = Console().print

89
pythonfun.sh Executable file
View File

@ -0,0 +1,89 @@
#!/usr/bin/env bash
#########################################
# Entornos Virtuales
#########################################
PyVirtEnvsDir=$HOME/Python/.virtualenvs/
creaPyVirtEnv(){
[[ -n ${1} ]] &&
python3 -m venv ${PyVirtEnvsDir}${1} &&
printf '\nEntorno virtual python: [%s] Creado 🐍️\n' "${1}" ||
printf '\nDebes ingresar un nombre 🙄️\n'
}
activaVenv(){
printf 'source %s%s/bin/activate' "${PyVirtEnvsDir}" "${1}" | xclip
printf '\n Orden copiada en portapapeles:\n'
printf '%s\n' "--------------------------------------------------------------------"
printf 'source %s%s/bin/activate' "${PyVirtEnvsDir}" "${1}"
printf '\n%s\n' "--------------------------------------------------------------------"
}
pyVirtEnvSel(){
declare -a ListVenv
local ConT
printf "\n Entornos Virtuales Python:\n\n"
for VirtEnv in $(ls $PyVirtEnvsDir)
do
ListVenv[$ConT]="$VirtEnv"
printf "\t%d) %s\n" "$ConT" "$VirtEnv"
((ConT++))
done
printf '\n\tc) Crear\n'
printf '\tq) Salir\n'
printf '\n Ingresa una opción.'
read -p " -> "
case $REPLY in
c)
printf '\n Crear nuevo entorno'
printf '\n Nombre del entorno'
read -p " -> " NOMBRE_ENTORNO
creaPyVirtEnv "${NOMBRE_ENTORNO}"
;;
q)
printf ' Salir\n'
exit 0
;;
[[:digit:]])
if [ $REPLY -ge 0 ] && [ $REPLY -lt ${#ListVenv[@]} ]
then
activaVenv "${ListVenv[$REPLY]}"
else
printf ' Inexistente\n'
exit 1
fi
;;
*)
printf ' Entrada invalida\n'
exit 1
;;
esac
}
#########################################
# OTRAS FUNCIONES
#########################################
_pip(){
[[ $1 = "search" ]] && pip_search "$2" || pip "$@"
}
pyDebug(){
if [ -s ${1} ]; then
python -m pdb -c continue ${1}
else
printf 'Archivo [%s] invalido' "${1}"
fi
}
pyMarkdown(){
python -m rich.markdown -y -c -p ${1} | bat --style header,grid
}
pyMicroCalc(){
python -c "print(${@})"
}
"$@"

6
ritopls Normal file
View File

@ -0,0 +1,6 @@
new_tab 'Lutris LoL'
title ' Lutris LoL '
launch bash -c 'bpytop && exit'
launch bash -c 'tail -f $HOME/Biblio/LutrisLibrary/league-of-legends/drive_c/Riot\ Games/League\ of\ Legends/debug.log'
launch bash -c 'lutris lutris:rungameid/2 && exit'
enabled_layouts tall:bias=60;full_size=1