Script de Bashing dentro de um Script

1

Eu escrevi um pequeno script que me permite conectar dois servidores via SSHFS. O script define as variáveis ou coloca os valores padrão se nada for inserido, por exemplo, porta SSH 22.

Eu quero criar um script que me permita digitar 1, 2 ou 3 e se conectar a

  1. Script SSHFS no qual eu insiro variáveis
  2. Servidor 1 do SSHFS
  3. Servidor SSHFS 2

Com o objetivo principal de ser que eu não precise digitar o nome de usuário, senha, nome do servidor, etc, cada vez que eu conectar via SSHFS.

Qual é a melhor maneira de estruturar isso, então não preciso repetir minha linha SSHFS

As variáveis alimentam esta linha.

sshfs -o allow_other,defer_permissions -o volname=$USER@$SERVERNAME $USER@$SERVERNAME:$REMOTEMOUNT $LOCALMOUNT -p$PORTNUMBER

Se eu usar switch case, eu preciso incluí-lo em cada caso de switch ou há alguma maneira de estruturá-lo para que essa linha seja incluída apenas uma vez.

    
por denski 13.01.2017 / 18:03

1 resposta

2

Primeiro, não use $USER . Essa é uma variável ambiental padrão que contém o nome de usuário do usuário atual. Se o nome de usuário for o mesmo em todos os servidores e na máquina em que você está executando o script, tudo bem. Mas se não, use um nome diferente. Em geral, evite usar nomes de variáveis UPPER CASE no bash, já que os reservados padrão são todos capitalizados.

Dito isso, você poderia fazer algo assim:

#!/bin/sh
case  in
    1)
        user="user1"
        servername="server1"
        remotemount="remote1"
        localmount="local1"
        portnumber="port1"
        ;;
    2)
        user="user2"
        servername="server2"
        remotemount="remote2"
        localmount="local2"
        portnumber="port2"
        ;;
    3)
        user="user3"
        servername="server3"
        remotemount="remote3"
        localmount="local3"
        portnumber="port3"
        ;;
    *)
        echo "Please use 1, 2 or 3"
        exit 1
        ;;
esac

echo sshfs -o allow_other,defer_permissions -o volname=$user@$servername $user@$servername:$remotemount $localmount -p$portnumber

Em seguida, execute seu script fornecendo 1 , 2 ou 3 como parâmetro:

foo.sh 2
    
por terdon 13.01.2017 / 23:11