【问题标题】:Use wlan0 or eth0 in different scripts / terminal在不同的脚本/终端中使用 wlan0 或 eth0
【发布时间】:2019-05-22 08:43:47
【问题描述】:

我有一个使用 eth0 和 wlan0 的 debian 安装。 对于我想使用 eth0 的所有应用程序,除了一个我想使用 wlan0 的脚本。

是否有可能强制例如在终端会话或例如一个 shell 脚本 wlan0 对这个特定脚本的使用?

非常感谢您的帮助

【问题讨论】:

标签: linux shell terminal debian


【解决方案1】:

是的,默认情况下使用eth0 非常容易,然后如果您需要使用wlan0 进行一次运行,只需将wlan0 作为命令行参数传递。您还应该检查您使用的值是eth0 还是wlan0,否则您应该认为参数无效。

实现该逻辑的简短脚本是:

#!/bin/sh

iface=${1:-eth0}  ## use eth0 by default or use the first argument

## if the iface entered is not eth0 or wlan0, handle error
if [ "$iface" != "eth0" ] && [ "$iface" != "wlan0" ]
then
    printf "error: invalid interface '%s'\n" "$iface"
    exit 1
fi

printf "using: %s\n" "$iface"  ## output interface being used

使用/输出示例

$ sh useiface.sh
using: eth0

$ sh useiface.sh wlan0
using: wlan0

$ sh useiface.sh eth1
error: invalid interface 'eth1'

当用户尝试使用无效的eth1 调用脚本并且脚本提供错误并退出时,您可以在上面看到。您可以根据自己的需要进行调整。

【讨论】:

  • 这个问题质量很低。虽然我看到了诚意,但在这里回答可能不是最佳选择。
  • 您好大卫,非常感谢您的回复。我理解你的剧本。它只是检查输入变量并默认 eth0。但是我看不到您如何将当前终端会话设置为使用 wlan0。我正在寻找 linux 命令来为一个脚本设置用于 wlan0 的接口,而不是通过 eth0 的网络。希望这能澄清一点。谢谢!
  • 它在 参数扩展 iface=${1:-eth0} 中扩展(实际上是说)iface=$1 (第一个位置参数......但是如果没有参数(没有$1) 是给定的,然后默认使用eth0)所以当wlan0 作为$1 传入时,然后iface=wlan0(或者它被设置为以$1 传入的任何其他值)这就是为什么if 声明如下以确保它是 eth0wlan0 而不是别的。
  • @hek2mgl - 同意,我们可以在学习完成后对其进行核弹。
  • @David C. Rankin 我创建了一个包含您的代码的 .sh 脚本。在 if 语句之后,我调用我的脚本。现在这个脚本仍在使用 eth0(在我的例子中称为 enp0s25)而不是 wlan0(wlp2s0)。我相应地调整了脚本。我还尝试在终端中设置 iface=wlp2s0 ,然后调用我的脚本。使用 enp0s25 的问题相同。你有任何其他想法如何调试这个或任何其他解决方案吗?非常感谢您的支持。