在脚本中攻击脚本

在脚本中攻击脚本

我写了一个小脚本,它允许我通过 SSHFS 连接两个服务器。该脚本设置变量,或者如果未输入任何内容,则输入默认值,即 SSH 端口 22。

我想创建一个脚本,允许我输入 1、2 或 3,然后连接到

  1. 我输入变量的 SSHFS 脚本
  2. SSHFS 服务器 1
  3. SSHFS 服务器 2

主要目的是每次通过 SSHFS 连接时,我不需要输入用户名、密码、服务器名称等。

构造这个的最佳方式是什么,这样我就不必重复我的 SSHFS 行

变量供给此行。

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

如果我使用 switch case,我是否需要将其包含在每个 switch case 中,或者是否有某种方式来构造它以便这一行只包含一次。

答案1

首先,不要使用$USER。这是一个默认的环境变量,用于保存当前用户的用户名。如果用户名在所有服务器和运行脚本的机器上都相同,那么没问题。但如果不同,请使用其他名称。通常,避免在 bash 中使用大写变量名,因为默认的保留变量名都是大写的。

也就是说,你可以做这样的事情:

#!/bin/sh
case $1 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

然后,运行脚本并提供或1作为参数:23

foo.sh 2

相关内容