本文主要是介绍解决重启电脑后WSL/WSL2虚拟机IP地址变换的问题(非标题党),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
看到很多人已经给出了方法,但是所有已知方法都在Windows内进行,不符合虚拟机的理念。下面给出一种快捷且不影响Windows的方法。
下面的方法仅适用于简单的配置要求,例如bashrc、zsh、git、vim插件和其他可通过linux内配置文件完成的设置。如果你的任务需要在Windows程序内设置地址,这个方法并不适用
在.bashrc/.zshrc中,将相关行替换为:
HOST=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}')
~~export DISPLAY=$HOST:0.0~~
export http_proxy="http://$HOST:10010/"
git config --global http.proxy http://$HOST:10010
git config --global https.proxy https://$HOST:10010
把10010改成你的代理端口。
其他文件也同理,例如apt-get配置代理,标准方法是在/etc/apt/apt.conf中插入
Acquire::http::Proxy "http://127.0.0.1:8087";
这样一行。
只需要写个shell/python脚本删除这行或者用正则表达式替换这行的ip地址即可。推荐使用python;
可以将脚本放在/etc/rc.d/rc.local或者.bash_profile中,让它登录后执行;
如果需要sudo权限,使用管道符连接标准输出和sudo命令,让python/shell自动输入sudo密码。例如
# -*- coding: utf-8 -*-
"""
仅作示例。看懂逻辑就行。
"""
import os
config_files = [] #将要修改的文件的绝对地址以字符串形式加入这个列表
to_change_line = [] #将要替换的行的关键词以字符串形式加入这个列表,例如'proxy'
PSWD = '歪比歪比,歪比巴卜' #以字符串形式保存sudo密码到这
host_address = os.popen(r"cat /etc/resolv.conf | grep nameserver | awk '{print $2}'").read()for i in len(config_files):cfile = config_files[i]old_proxy = to_change_line[i]file_cache = r''os.popen(f'echo "{PSWD}" | sudo -S cp {cfile} {cfile}.backup').read()with open(cfile, r) as c:one_line = c.readline()if old_proxy in one_line:one_line = one_line.replace(old_proxy, host_address)file_cache += one_linewith open(cfile, w) as c:c.write(file_cache)
这篇关于解决重启电脑后WSL/WSL2虚拟机IP地址变换的问题(非标题党)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!