我工作中经常需要更改 MAC 地址,因此我想创建两个键盘快捷键:
当我按下快捷键时,终端会打开并显示粘贴的命令
sudo ifconfig eth0 down && sudo ifconfig eth0 hw ether (xx:xx:xx:xx:xx:xx) && sudo ifconfig eth0 up
需要光标出现在命令中间,在那里我可以写 MAC。(或提供另一个命令)
按下快捷键,自动将剪贴板中的 MAC 地址粘贴到上面的命令中并执行。
答案1
目的:
您想要一个漂亮的小型 MAC 转换器,只需使用键盘快捷键即可调用它并输入 MAC 吗?它还应该能够从剪贴板读取它?
以下是您想要的:
准备:
要访问剪贴板,我们需要xsel
。使用命令安装
sudo apt-get install xsel
脚本:
我们需要编写四个小 shell 脚本来完成您的工作。使用您最喜欢的纯文本编辑器
创建以下文件。您需要 sudo/root 权限才能将它们保存在所需的位置。/usr/local/bin
get-mac
:#! /bin/bash ip addr show eth0 | awk '/ether/{print $2}'
get-mac-dialog
:#! /bin/bash zenity --info --title "MAC Changer" --text "Current MAC address: $(get-mac)" 2>/dev/null
change-mac
:#! /bin/bash ifconfig eth0 down && ifconfig eth0 hw ether "$@" || exit 1 ifconfig eth0 up
change-mac-dialog
:#! /bin/bash oldmac=$(get-mac) newmac=$(zenity --entry --title "MAC Changer" --text "New MAC address:" --entry-text $oldmac 2>/dev/null) && gksudo change-mac $newmac || zenity --error --title "MAC Changer" --text "Failed to change MAC address"
paste-mac
:#! /bin/bash gksudo change-mac $(xsel -ob)
如果您的网络接口有除 之外的任何其他名称eth0
,则必须将脚本中出现的所有 4 次名称替换为真实名称!
现在设置正确的所有权和权限:
chmod 755 /usr/local/bin/get-mac /usr/local/bin/get-mac-dialog /usr/local/bin/change-mac /usr/local/bin/change-mac-dialog /usr/local/bin/paste-mac
sudo chown root: /usr/local/bin/get-mac /usr/local/bin/get-mac-dialog /usr/local/bin/change-mac /usr/local/bin/change-mac-dialog /usr/local/bin/paste-mac
使用总结:
get-mac
:只需将当前的 MAC 地址打印
eth0
到终端即可。get-mac-dialog
:显示一个小的对话窗口,显示当前的MAC地址
eth0
。change-mac
:直接尝试更改 的 MAC 地址
eth0
。执行此操作时,它会断开并重新连接接口。您必须以 root 身份运行此操作!例子:
sudo change-mac 12:34:56:78:9a:bc
change-mac-dialog
:显示一个漂亮的小 GUI 提示,要求您输入新的 MAC 地址(默认文本是当前 MAC)。系统将提示您使用 GUI 输入 sudo 密码
gksudo
。paste-mac
:使用当前剪贴板内容作为参数进行调用
gksudo change-mac
。系统将提示您使用 GUI 输入 sudo 密码gksudo
。
快捷方式:
我认为您可以自己为脚本创建自定义快捷方式,否则请参考这里。
请注意,您可能不应该为change-mac
(需要以 root 身份运行并需要 MAC 作为参数)或get-mac
(将输出打印到终端)创建快捷方式。使用change-mac-dialog
和get-mac-dialog
作为它们的 GUI 替代品。paste-mac
既不需要任何输入,也不会创建输出,因此您可以毫无问题地为其创建快捷方式。