Converter .sh em .bat

1. Converter .sh em .bat

Douglas de Souza
cdouglas_souza

(usa Ubuntu)

Enviado em 27/01/2020 - 17:51h

Olá pessoal, boa tarde!!
Estou com o seguinte problema, tenho 3 arquivos .sh aos quais gostaria de utilizar no windows, convertendo-os para .bat, pelo que ví não existe automação para esta tarefa tendo que ser feito manualmente. Como não tenho essa habilidade gostaria de saber se alguém poderia me ajudar fazendo esta conversão. Desde de já agradeço pelo apoio!
Os arquivos são os seguites:


----------------------------------------------------------------------------------------------------------------------------
config.sh

FREEZE_MYSQL_TIMEOUT=300
FREEZE_SNAPSHOT_TIMEOUT=60
FREEZE_LOCKFILE=/var/lib/Acronis/mysql/mysql-freeze.lock
FREEZE_LOGFILE=/var/lib/Acronis/mysql/mysql-freeze.log
---------------------------------------------------------------------------------------------------------------------------
pre-freeze-script.sh

#!/bin/bash

source config.sh

echo "$(date -Ins) ---------------------------------------------------------------------" >> "$FREEZE_LOGFILE"
echo "$(date -Ins) - Pre-freeze script started." >> "$FREEZE_LOGFILE"

echo "$(date -Ins) - Deleting freeze lock file..." >> "$FREEZE_LOGFILE"
rm -f "$FREEZE_LOCKFILE"

echo "$(date -Ins) - Starting MySQL freeze session..." >> "$FREEZE_LOGFILE"
mysql \
--defaults-extra-file=/root/.my.cnf \
--execute="FLUSH TABLES WITH READ LOCK; SYSTEM touch \"$FREEZE_LOCKFILE\"; SYSTEM echo \"\$(date -Ins) - Freeze lock aquired.\" >> \"$FREEZE_LOGFILE\"; SYSTEM sleep $FREEZE_SNAPSHOT_TIMEOUT; SYSTEM echo \"\$(date -Ins) - Freeze session terminated.\" >> \"$FREEZE_LOGFILE\";" \
1>/dev/null 2>/dev/null &

FREEZE_SESSION_PID=$!
echo "$(date -Ins) - Started MySQL freeze session, PID is $FREEZE_SESSION_PID..." >> "$FREEZE_LOGFILE"

attempts=0
while [ ! -f "$FREEZE_LOCKFILE" ]; do

if ! ps -p $FREEZE_SESSION_PID 1>/dev/null; then
echo "$(date -Ins) - Seems like MySQL freeze statement failed. Aborted." >> "$FREEZE_LOGFILE"
exit 1
fi

sleep 1s
attempts=$((attempts+1))

if [ $attempts -gt $FREEZE_MYSQL_TIMEOUT ]; then
echo "$(date -Ins) - MySQL cannot freeze in suitable time. Aborting..." >> "$FREEZE_LOGFILE"
kill $FREEZE_SESSION_PID
exit 2
fi

echo "$(date -Ins) - Waiting for MySQL to freeze tables. Making try $attempts..." >> "$FREEZE_LOGFILE"

done

echo $FREEZE_SESSION_PID > "$FREEZE_LOCKFILE"
echo "$(date -Ins) - Freeze successful." >> "$FREEZE_LOGFILE"
-----------------------------------------------------------------------------------------------------------------------------------------------------------
post-thaw-script.sh

#!/bin/bash

source config.sh

echo "$(date -Ins) - Post-thaw script started." >> "$FREEZE_LOGFILE"

FREEZE_SESSION_PID=$(cat "$FREEZE_LOCKFILE")

echo "$(date -Ins) - Terminating freeze session. PID is $FREEZE_SESSION_PID." >> "$FREEZE_LOGFILE"
pkill -9 -P $FREEZE_SESSION_PID

echo "$(date -Ins) - Deleting freeze lock file..." >> "$FREEZE_LOGFILE"
rm -f "$FREEZE_LOCKFILE"

echo "$(date -Ins) - Unfreeze successful." >> "$FREEZE_LOGFILE"
-----------------------------------------------------------------------------------------------------------------------------------------------------



  


2. Re: Converter .sh em .bat

Perfil removido
removido

(usa Nenhuma)

Enviado em 27/01/2020 - 18:48h

Acho que não há como. Primeiro, a hierarquia de sistema no Windows é muito diferente.

Mas digamos que você mude os caminhos adequadamente..

Você deve entender que , o script de shell é compilado antes de rodar.

Melhor você usar o cygwin para rodar bash no windows..
https://www.cygwin.com/


3. Re: Converter .sh em .bat

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 27/01/2020 - 19:58h


marimbondo2 escreveu:

Acho que não há como. Primeiro, a hierarquia de sistema no Windows é muito diferente.

Mas digamos que você mude os caminhos adequadamente..

Você deve entender que , o script de shell é compilado antes de rodar.

Melhor você usar o cygwin para rodar bash no windows..
https://www.cygwin.com/


Marimbomdo, boa noite.
ShellScript não é compilado antes de "rodar",
Ele é interpretado......

______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________


4. Re: Converter .sh em .bat

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 27/01/2020 - 20:03h

Olá pessoal, boa tarde!!
Estou com o seguinte problema, tenho 3 arquivos .sh aos quais gostaria de utilizar no windows, convertendo-os para .bat, pelo que ví não existe automação para esta tarefa tendo que ser feito manualmente. Como não tenho essa habilidade gostaria de saber se alguém poderia me ajudar fazendo esta conversão. Desde de já agradeço pelo apoio!

Você deve reescrever os scripts em .bat
https://en.wikibooks.org/wiki/Windows_Batch_Scripting
______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________


5. Re: Converter .sh em .bat

Perfil removido
removido

(usa Nenhuma)

Enviado em 27/01/2020 - 20:52h

msoliver escreveu:


marimbondo2 escreveu:

Acho que não há como. Primeiro, a hierarquia de sistema no Windows é muito diferente.

Mas digamos que você mude os caminhos adequadamente..

Você deve entender que , o script de shell é compilado antes de rodar.

Melhor você usar o cygwin para rodar bash no windows..
https://www.cygwin.com/


Marimbomdo, boa noite.
ShellScript não é compilado antes de "rodar",
Ele é interpretado......

______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________



Note que quando eu falo em 'compilar', não quero dizer da mesma forma que um compilador de C o faz, ou seja, iria pegar um arquivo e transformá-lo no código executável que o processador entende; aqui, simplesmente é o formato que a shell acaba usando internamente e é inútil sem uma versão de shell compatível..

O que ocorre é que as linhas de comando ainda aparecem no código compilado, exceto um pouco processados.
Depois de compiladas, as funções em um script, por exemplo, ficam disponíveis na memória.

No z-shell podemos até compilar um script com 'zcompile' para reduzir o tempo de carregamento deles..

Existem pessoas no mundo com nada melhor para fazer do que compilar o histórico do UNIX, então por isso que gostamos de saber tudo certinho, como neste caso..

Languages like Perl compile the language into an internal byte-code, which executes significantly faster than pure interpreters. The overhead cost is a little high on initial execution, but runtime performance is greatly increased.

CCSH actually compiles the script into machine code. It therefore has a lot more overhead on initial execution, but runtime performance is exactly the same as any other compiled program.

http://ccsh.sourceforge.net/

ksh93 as distributed by AT&T comes with "shcomp", a program that can compile a ksh script. The compiled script can then be read and executed by ksh93.

https://www.unix.com/shell-programming-and-scripting/8108-obfuscating-shell-scripts.html


6. Re: Converter .sh em .bat

Cézar Augusto
cizordj

(usa Debian)

Enviado em 27/01/2020 - 21:00h

O shell e o batch do Windows são completamente diferentes, são duas linguagens de programação, é como você programar algo em javascript e querer converter para python... sei lá. No seu caso o que você deve fazer é olhar o que o shell faz e reescrever do zero um script para o Windows. Se você quer algo mais multiplataforma também existe o powershell da microsoft, não sei se isso funciona.
________________________________________________
O programador tem a mania de achar que tudo é objeto






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts