Shell Script não funcionará após a transferência de arquivos para o servidor, mas funcionará se copiado no VI

0

Como o título diz, eu tenho um shell script escrito, em seguida, transfiro o arquivo para RHEL6 ou 7. Eu dou a permissão executável do script e corro. Ele gera um monte de erros.

Se eu vi backup.sh, copie o texto do script, então: wq e chmod + x ele roda perfeitamente.

Eu tentei filezilla e WinSCP. Tentei alterar as configurações de transferência para binário. Eu tentei notepad ++ e notepad.exe. Nada funciona, exceto para criar o script no servidor real.

Esta questão não está isolada apenas para mim. Colegas de trabalho experimentam o mesmo resultado em suas máquinas.

Alguma idéia?

# !/bin/bash
# A backup script that copies important files to a backup folder called 
#'hostname'_'date +%Y-%m-%d';
# Example: BrianAA_2017-10-11

path=/tmp/'hostname'_'date +%Y-%m-%d'
backup=$path

echo "Making backup directory $backup now"
mkdir -p -m777 $path

#Copy
cp -pr /opt/advatar/etc/advatar.conf $backup
cp -pr /etc/hosts $backup
cp -L /etc/rc.local $backup
cp -pr /etc/sysconfig/network $backup
cp -pr /etc/ntp.conf $backup
cp -pr /etc/sysconfig/ntpd $backup

#Looks for only "ifcfg-*" in /etc/sysconfig/network-scripts/
rsync -a --include='ifcfg-*' --exclude '*' /etc/sysconfig/network-scripts/ 
$backup

#iptables || firewalld
cat /etc/redhat-release | egrep -q '6.*'
if [ "$?" = "0" ]; then
    cp -pr /etc/sysconfig/iptables $backup
    cp -pr /etc/sysconfig/iptables-config $backup
fi
cat /etc/redhat-release | egrep -q '7.*'
if [ "$?" = "0" ]; then
    cp -pr /etc/firewalld $backup
fi

#prints output of network information to txt files in $backup
route > $backup/route.txt
ip a s > $backup/ifconfig.txt

#Looks for external mount points and searches by type: cifs, nfs, rpc,
#then copies necessary files to $backup if present in mount
mount | egrep -q 'cifs|nfs|rpc'
if [ "$?" = "0" ]; then
mount > $backup/mount.txt
    cp -pr /etc/auto.cifs $backup
    cp -pr /etc/auto.master $backup
    cp -pr /root/.smbauth $backup
    cp -pr /etc/fstab $backup
else
    echo "No Network Mount"
fi

[root @ IFS-AA6 tmp] # ./back.sh
: comando não encontrado
: comando não encontrado
 novo diretório de backup / tmp / IFS-AA6_2017-10-26
: comando não encontrado
: comando não encontrado
ERRO: destino deve ser um diretório ao copiar mais de um arquivo
Erro de rsync: erros ao selecionar arquivos de entrada / saída, dirs (código 3) em main.c (542) [receiver = 3.0.6]
rsync: conexão inesperadamente fechada (9 bytes recebidos até agora) [remetente]
erro de rsync: erro no fluxo de dados do protocolo rsync (código 12) em io.c (600 [emissor = 3.0.6]) : comando não encontrado
./back.sh: linha 50: erro de sintaxe próximo do token inesperado fi' ./back.sh: line 50: fi '
[root @ IFS-AA6 tmp] #

    
por BrianH 26.10.2017 / 21:48

1 resposta

0

Make sure, when you transfer the file, that the line endings are LF only, not CRLF. The : command not found are most likely \r: command not found for the blank lines with \r\n line endings – glenn jackman 16 mins ago

@glennjackman thanks so much that was it

    
por 26.10.2017 / 22:07