欢迎来到Heck's Blog,专业承接拿站、企业建站、仿站、网上商城架构、门户网站搭建、空间域名注册、软件定制等项目。关注网络安全,因为专注,所以专业,懂得放弃,才能收获。有事请发邮件至i@heckjj.com,请记住本站网址:http://www.heckjj.com,多谢。
1月12
MinIO 服务器配置文件(config.json)存储在 --config-dir 指定的配置目录中,--config-dir 默认值为 ${HOME}/.minio(笔者的目录为 C:\Users\Administrator\.minio)。
但是从 RELEASE.2018-08-18T03-49-57Z 之后的版本开始,配置文件已迁移到存储数据的 .minio.sys/config 目录(存储后端是启动服务器时传递给 MinIO 服务器的目录)。如果使用如下命令启动 MinIO 服务:
minio.exe server D:/tmp/data
则配置文件位于 D:\tmp\data\.minio.sys\config 目录中。
注意:你可以使用 mc -h 命令查看当前 MinIO 的版本信息,如下:
D:\server\minio>mc -h
NAME:
mc - MinIO Client for cloud storage and filesystems.
...
VERSION:
RELEASE.2021-06-13T17-48-22Z
您可以使用 --config-dir 指定现有配置的位置,MinIO 会自动将 config.json 迁移到您的后端存储。您当前 --config-dir 指定的 config.json 配置文件将在成功迁移后重命名为 config.json.deprecated。
如果你的配置文件位于 C:\Users\Administrator\.minio\config.json,MinIO 会自动将 config.json 中的配置迁移到 D:\tmp\data\.minio.sys\config\config.json 文件,然后将 C:\Users\Administrator\.minio\config.json 重命名为 C:\Users\Administrator\.minio\config.json.deprecated。
此外 --config-dir 现在是一个遗留选项,计划在将来删除,因此请相应地更新您的本地启动和 ansible 脚本。使用如下命令去启动 MinIO 服务:
minio.exe server D:\tmp\data
上面命令,将创建的存储桶以及存储桶中的对象放到 D:\tmp\data 目录,并且配置信息均位于 D:\tmp\data\.minio.sys 目录。
但是从 RELEASE.2018-08-18T03-49-57Z 之后的版本开始,配置文件已迁移到存储数据的 .minio.sys/config 目录(存储后端是启动服务器时传递给 MinIO 服务器的目录)。如果使用如下命令启动 MinIO 服务:
minio.exe server D:/tmp/data
则配置文件位于 D:\tmp\data\.minio.sys\config 目录中。
注意:你可以使用 mc -h 命令查看当前 MinIO 的版本信息,如下:
D:\server\minio>mc -h
NAME:
mc - MinIO Client for cloud storage and filesystems.
...
VERSION:
RELEASE.2021-06-13T17-48-22Z
您可以使用 --config-dir 指定现有配置的位置,MinIO 会自动将 config.json 迁移到您的后端存储。您当前 --config-dir 指定的 config.json 配置文件将在成功迁移后重命名为 config.json.deprecated。
如果你的配置文件位于 C:\Users\Administrator\.minio\config.json,MinIO 会自动将 config.json 中的配置迁移到 D:\tmp\data\.minio.sys\config\config.json 文件,然后将 C:\Users\Administrator\.minio\config.json 重命名为 C:\Users\Administrator\.minio\config.json.deprecated。
此外 --config-dir 现在是一个遗留选项,计划在将来删除,因此请相应地更新您的本地启动和 ansible 脚本。使用如下命令去启动 MinIO 服务:
minio.exe server D:\tmp\data
上面命令,将创建的存储桶以及存储桶中的对象放到 D:\tmp\data 目录,并且配置信息均位于 D:\tmp\data\.minio.sys 目录。
1月12
第一步,进入/opt 目录,创建minio文件夹
cd /opt
mkdir minio
第二步,wget下载安装包:
https://dl.minio.io/server/minio/release/linux-amd64/minio
第三步,进入minio文件夹创建log文件
cd /minio
touch minio.log
第四步,赋予minio文件执行权限
chmod 777 minio
第五步,启动minio
./minio server /opt/minio/data (/opt/minio/data 为你存放静态文件的目录)
这个时候我们看下面爆红的提示,说的是:
警告:控制台端点正在侦听动态端口 (39175),请使用 --console-address “:PORT” 选择静态端口。
警告:检测到默认凭据“minioadmin:minioadmin”,我们建议您使用“MINIO_ROOT_USER”和“MINIO_ROOT_PASSWORD”环境变量更改这些值
所以我们按照提示来:
export MINIO_ROOT_USER=fileadmin
export MINIO_ROOT_PASSWORD=fileadmin
第六步,重新启动minio
./minio server /opt/minio/data (/opt/minio/data 为你存放静态文件的目录)
第七步,设置环境变量
vim /etc/profile
添加
# set minio environment
export MINIO_ROOT_USER=fileadmin
export MINIO_ROOT_PASSWORD=fileadmin
生效:source /etc/profile;
第 七步,设置minio后台启动(指定端口)
vim start.sh
nohup /opt/minio/minio server /opt/minio/data --console-address ":35555" > /opt/minio/minio.log 2>&1 &
('2>&1’表示现在标准输出直接输入到/opt/minio/minio.log 中,而2>&1是将标准错误重定向到标准输出,‘nohup’和末尾’&'组合使用表示脱离终端后继续执行)
cd /opt
mkdir minio
第二步,wget下载安装包:
https://dl.minio.io/server/minio/release/linux-amd64/minio
第三步,进入minio文件夹创建log文件
cd /minio
touch minio.log
第四步,赋予minio文件执行权限
chmod 777 minio
第五步,启动minio
./minio server /opt/minio/data (/opt/minio/data 为你存放静态文件的目录)
这个时候我们看下面爆红的提示,说的是:
警告:控制台端点正在侦听动态端口 (39175),请使用 --console-address “:PORT” 选择静态端口。
警告:检测到默认凭据“minioadmin:minioadmin”,我们建议您使用“MINIO_ROOT_USER”和“MINIO_ROOT_PASSWORD”环境变量更改这些值
所以我们按照提示来:
export MINIO_ROOT_USER=fileadmin
export MINIO_ROOT_PASSWORD=fileadmin
第六步,重新启动minio
./minio server /opt/minio/data (/opt/minio/data 为你存放静态文件的目录)
第七步,设置环境变量
vim /etc/profile
添加
# set minio environment
export MINIO_ROOT_USER=fileadmin
export MINIO_ROOT_PASSWORD=fileadmin
生效:source /etc/profile;
第 七步,设置minio后台启动(指定端口)
vim start.sh
nohup /opt/minio/minio server /opt/minio/data --console-address ":35555" > /opt/minio/minio.log 2>&1 &
('2>&1’表示现在标准输出直接输入到/opt/minio/minio.log 中,而2>&1是将标准错误重定向到标准输出,‘nohup’和末尾’&'组合使用表示脱离终端后继续执行)
1月10
系统中对密码复杂度的校验是比较常见的工作,往往我们可以通过正则来实现,或者基于规则而实现特定的算法来满足需求。
下面我来介绍两个开源的解决方案。
1.使用vt-password来实现密码复杂度的检查
VT 密码是一个 Java 库,用于验证密码是否符合定义的规则集。
该库包括以下规则实现:
AllowedCharacterRule - 密码是否只包含特定的字符列表
AlphabeticalSequenceRule - 密码是否包含字母顺序
CharacterCharacteristicRule - 密码是否包含所需的字符类型组合
DictionaryRule - 密码是否与字典中的单词匹配
DictionarySubstringRule - 密码是否包含字典中的单词
DigitCharacterRule - 密码是否包含数字
HistoryRule - 密码是否与以前的密码匹配,支持散列
IllegalCharacterRule - 密码是否包含非法字符
LengthRule - 是一定长度的密码
LowercaseCharacterRule - 密码是否包含小写字符
NonAlphanumericCharacterRule - 密码是否包含非字母数字字符
NumericalSequenceRule - 密码是否包含数字序列
RegexRule - 密码是否与正则表达式匹配
RepeatCharacterRegexRule - 密码是否包含重复字符
SequenceRule - 密码是否包含键盘序列
SourceRule - 密码是否与来自另一个系统或来源的密码匹配
QwertySequenceRule - 密码是否包含 QWERTY 键盘序列
UppercaseCharacterRule - 密码是否包含大写字符
UsernameRule - 密码是否包含用户名
WhitespaceRule - 密码是否包含空格
如果你想在你的Maven构建中使用这个项目,请在你的pom.xml 中包含以下内容:
<dependency>
<groupId>edu.vt.middleware</groupId>
<artifactId>vt-password</artifactId>
<version>3.1.2</version>
</dependency>
下面我来介绍两个开源的解决方案。
1.使用vt-password来实现密码复杂度的检查
VT 密码是一个 Java 库,用于验证密码是否符合定义的规则集。
该库包括以下规则实现:
AllowedCharacterRule - 密码是否只包含特定的字符列表
AlphabeticalSequenceRule - 密码是否包含字母顺序
CharacterCharacteristicRule - 密码是否包含所需的字符类型组合
DictionaryRule - 密码是否与字典中的单词匹配
DictionarySubstringRule - 密码是否包含字典中的单词
DigitCharacterRule - 密码是否包含数字
HistoryRule - 密码是否与以前的密码匹配,支持散列
IllegalCharacterRule - 密码是否包含非法字符
LengthRule - 是一定长度的密码
LowercaseCharacterRule - 密码是否包含小写字符
NonAlphanumericCharacterRule - 密码是否包含非字母数字字符
NumericalSequenceRule - 密码是否包含数字序列
RegexRule - 密码是否与正则表达式匹配
RepeatCharacterRegexRule - 密码是否包含重复字符
SequenceRule - 密码是否包含键盘序列
SourceRule - 密码是否与来自另一个系统或来源的密码匹配
QwertySequenceRule - 密码是否包含 QWERTY 键盘序列
UppercaseCharacterRule - 密码是否包含大写字符
UsernameRule - 密码是否包含用户名
WhitespaceRule - 密码是否包含空格
如果你想在你的Maven构建中使用这个项目,请在你的pom.xml 中包含以下内容:
<dependency>
<groupId>edu.vt.middleware</groupId>
<artifactId>vt-password</artifactId>
<version>3.1.2</version>
</dependency>
12月12
让bat批处理以管理员权限运行的实现方法
有的电脑是非管理员登录,运行程序时,需要提示是否运行运行。解决方法如下:
在批处理开头加上:
适用于无参数
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c "^&chr(34)^&"%~0"^&chr(34)^&" ::","%cd%","runas",1)(window.close)&&exit
适用于有参数
%2 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c "^&chr(34)^&"%~0"^&chr(34)^&" "^&chr(34)^&"%~1"^&chr(34)^&" ::","%cd%","runas",1)(window.close)&&exit
更多参数的以此类推
运行批处理时多加一个参数::,这句就不会执行
为了兼容8.3短路径,可把%~0等换成%~s0等
理论上是没问题,但启动路径有时不可靠,之后可能还要pushd或cd /d
bat文件以管理员权限运行的几种方式
1、创建bat快捷方式,然后右键快捷方式-->properties-->advanced-->Run as administrator。
2、下载bat转成exe工具,将bat转成exe,然后右键exe-->properties-->Compatibility-->Run as administrator。
3、以管理员权限运行cmd,然后dos框中运行相应的bat。
有的电脑是非管理员登录,运行程序时,需要提示是否运行运行。解决方法如下:
在批处理开头加上:
适用于无参数
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c "^&chr(34)^&"%~0"^&chr(34)^&" ::","%cd%","runas",1)(window.close)&&exit
适用于有参数
%2 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c "^&chr(34)^&"%~0"^&chr(34)^&" "^&chr(34)^&"%~1"^&chr(34)^&" ::","%cd%","runas",1)(window.close)&&exit
更多参数的以此类推
运行批处理时多加一个参数::,这句就不会执行
为了兼容8.3短路径,可把%~0等换成%~s0等
理论上是没问题,但启动路径有时不可靠,之后可能还要pushd或cd /d
bat文件以管理员权限运行的几种方式
1、创建bat快捷方式,然后右键快捷方式-->properties-->advanced-->Run as administrator。
2、下载bat转成exe工具,将bat转成exe,然后右键exe-->properties-->Compatibility-->Run as administrator。
3、以管理员权限运行cmd,然后dos框中运行相应的bat。
12月9
想更改hosts文件添加域名与地址ip、由于hosts文件受保护并且是只读属性。因此需要先赋予权限,并取消只读属性才能正常写入
/E 编辑 ACL 而不替换。
/G 赋予指定用户访问权限。
F 完全权限。

Administrators、SYSTEM、Users(是windows用户组需要什么加什么)
attrib 是控制文件属性的
+ 添加文件属性
- 删除文件属性
R 只读文件属性
A 存档文件属性
S 系统文件属性
H 隐藏文件属性
I 无连接属性
@echo
@echo 127.0.0.1 .heckjj.com >>E:hosts(这是我们要写入的内容)
虽然脚本比较笨拙,但是亲测有效,若是找不到好的方法可以选择试一下O(∩_∩)O
======================================================================================
1、新建记事本输入一下内容
bat脚本代码如下:
set HOSTS=C:\Windows\System32\drivers\etc\hosts
echo Y|cacls %HOSTS% /E /G Administrators:F
echo Y|cacls %HOSTS% /E /G SYSTEM:F
echo Y|cacls %HOSTS% /E /G Users:F
attrib -r -h %HOSTS%
@echo
@echo.>>%HOSTS%
@echo 127.0.0.1 heckjj.com >>%HOSTS%
attrib +r +h %HOSTS%
title 刷新本地dns缓存并退出
echo 查看修改后的hosts文件内容,1秒后退出!
type "%HOSTS%" |findstr /v "^#"|findstr "[0-9]"
ping -n 1 127.0.0.1>nul
ipconfig /flushdns
echo 刷新本地缓存成功,即将退出!
ping -n 2 127.0.0.1>nul
echo.
exit
2、将记事本后缀名改为.bat格式的文件,然后双击即可完成修改。
/E 编辑 ACL 而不替换。
/G 赋予指定用户访问权限。
F 完全权限。
Administrators、SYSTEM、Users(是windows用户组需要什么加什么)
attrib 是控制文件属性的
+ 添加文件属性
- 删除文件属性
R 只读文件属性
A 存档文件属性
S 系统文件属性
H 隐藏文件属性
I 无连接属性
@echo
@echo 127.0.0.1 .heckjj.com >>E:hosts(这是我们要写入的内容)
虽然脚本比较笨拙,但是亲测有效,若是找不到好的方法可以选择试一下O(∩_∩)O
======================================================================================
1、新建记事本输入一下内容
bat脚本代码如下:
set HOSTS=C:\Windows\System32\drivers\etc\hosts
echo Y|cacls %HOSTS% /E /G Administrators:F
echo Y|cacls %HOSTS% /E /G SYSTEM:F
echo Y|cacls %HOSTS% /E /G Users:F
attrib -r -h %HOSTS%
@echo
@echo.>>%HOSTS%
@echo 127.0.0.1 heckjj.com >>%HOSTS%
attrib +r +h %HOSTS%
title 刷新本地dns缓存并退出
echo 查看修改后的hosts文件内容,1秒后退出!
type "%HOSTS%" |findstr /v "^#"|findstr "[0-9]"
ping -n 1 127.0.0.1>nul
ipconfig /flushdns
echo 刷新本地缓存成功,即将退出!
ping -n 2 127.0.0.1>nul
echo.
exit
2、将记事本后缀名改为.bat格式的文件,然后双击即可完成修改。
12月9
公司有个项目不能解析内网所以需要对本地hosts文件进行修改,添加一条本地域名解析记录,如果让客户去操作,很容易破坏掉原先的hosts文件,用户只需要以管理员权限运行即可,如果记录存在则替换掉。
由于办公电脑都使用信创麒麟的系统,所以最好做一个deb的安装包,通过程序写修改的,在信创麒麟的系统电脑下载安装即可执行。
下面是实现逻辑,要将java打包成deb安装包就需要使用jdeb的maven插件来打包。
我使用的是1.8的版本,具体配置就不贴上来了,需要的联系我。
<artifactId>jdeb</artifactId>
<groupId>org.vafer</groupId>
<version>1.8</version>
package com.nine.rivers.jdeb;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.IORuntimeException;
import cn.hutool.core.util.StrUtil;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
/**
* @Description 不破坏原有hosts文件,支持新host绑定或修改支持host解绑
* @Date 2022/12/9 16:42
* @Author heck
**/
public class HostUtil {
public static final String LINUX = "linux";
public static final String LINUX_HOSTS_PATH = "/etc/hosts";
public static final String WINDIR = "windir";
public static final String WIN_HOSTS_PATH = "\\system32\\drivers\\etc\\hosts";
public static final String OS_NAME = "os.name";
/**
* 获取host文件路径
*
* @return
*/
public static String getHostFile() {
String fileName = null;
// 判断系统
if (LINUX.equalsIgnoreCase(System.getProperty(OS_NAME))) {
fileName = LINUX_HOSTS_PATH;
} else {
fileName = System.getenv(WINDIR) + WIN_HOSTS_PATH;
}
return fileName;
}
由于办公电脑都使用信创麒麟的系统,所以最好做一个deb的安装包,通过程序写修改的,在信创麒麟的系统电脑下载安装即可执行。
下面是实现逻辑,要将java打包成deb安装包就需要使用jdeb的maven插件来打包。
我使用的是1.8的版本,具体配置就不贴上来了,需要的联系我。
<artifactId>jdeb</artifactId>
<groupId>org.vafer</groupId>
<version>1.8</version>
package com.nine.rivers.jdeb;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.IORuntimeException;
import cn.hutool.core.util.StrUtil;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
/**
* @Description 不破坏原有hosts文件,支持新host绑定或修改支持host解绑
* @Date 2022/12/9 16:42
* @Author heck
**/
public class HostUtil {
public static final String LINUX = "linux";
public static final String LINUX_HOSTS_PATH = "/etc/hosts";
public static final String WINDIR = "windir";
public static final String WIN_HOSTS_PATH = "\\system32\\drivers\\etc\\hosts";
public static final String OS_NAME = "os.name";
/**
* 获取host文件路径
*
* @return
*/
public static String getHostFile() {
String fileName = null;
// 判断系统
if (LINUX.equalsIgnoreCase(System.getProperty(OS_NAME))) {
fileName = LINUX_HOSTS_PATH;
} else {
fileName = System.getenv(WINDIR) + WIN_HOSTS_PATH;
}
return fileName;
}
12月7
使用Navicat连接SQLserver时,具体报错信息如下:
Installation of this product failed because it is not
supported on this operating system. For information on supported configurations,
see the product documentation.
解决方法:
这个要安装一个叫做sqlncli_x64.msi的东西,手动安装,它在你的Navicat的安装目录下面,比如我的在:
D:\Program Files\PremiumSoft\Navicat Premium
如果你的电脑是64位的,就运行安装那个64位的(我电脑是64位,就只标记出了64位的),如果是32 的就运行那个sqlncli.msi。
然后再进行Sqlserver的链接就不再提示安装出错了。
12月7
12月5
公司有个项目需要对本地hosts文件进行修改,添加一条本地域名解析记录,如果让客户去操作,很容易破坏掉原先的hosts文件,最好是能封装成一个批处理脚本,用户只需要以管理员权限运行即可,如果记录存在则替换掉。
:: 关闭命令的回显
@echo off
:: 使用前请修改域名地址和ip地址
:: 域名地址
set url=heckjj.com
:: ip地址
set ip=192.168.1.1
:: 设置hosts文件路径
set HOSTS=C:\Windows\System32\drivers\etc\hosts
:: 判断当前路径是否存在 hosts.init 文件, 不存在则备份
if not exist %HOSTS%.init (
copy /y %HOSTS% %HOSTS%.init && echo 系统hosts文件备份完成!
)
:: %date%=2022年12月04日
:: %time%= 9:12:38:96
:: 年 yyyy = %date:~0,4% 表示指针从左到右偏移 0 位, 然后提取 4 字符
:: 月 mm = %date:~5,2% 表示指针从左到右偏移 5 位, 然后提取 2 字符
:: 日 dd = %date:~8,2% 表示指针从左到右偏移 8 位, 然后提取 2 字符
set yyyymmdd=%date:~0,4%-%date:~5,2%-%date:~8,2%
:: 时 hh = %time:~0,2% 表示指针从左到右偏移 0 位, 然后提取 2 字符
:: 分 mm = %time:~3,2% 表示指针从左到右偏移 3 位, 然后提取 2 字符
:: 秒 ss = %time:~6,2% 表示指针从左到右偏移 6 位, 然后提取 2 字符
set hh=%time:~0,2%
set mm=%time:~3,2%
set ss=%time:~6,2%
:: 当 hh 小于等于 9 时, 在前面补 0
if %hh% leq 9 (set hh=0%hh:~1,1%)
ECHO.############################## 修改系统hosts解析文件 ##############################
ECHO.#
ECHO.############################### %yyyymmdd% %hh%:%mm%:%ss% ###############################
set ip_domain=%ip% %url%
type %HOSTS% |findstr /v "^#"| findstr /i "%ip_domain%"
if %errorlevel% == 0 (
findstr /vi "%ip_domain%" %HOSTS% > C:\tmp\hosts.tmp
type C:\tmp\hosts.tmp > %HOSTS%
del /F /A /Q C:\tmp\hosts.tmp
echo %ip_domain% 更新成功!
) else (
echo %ip_domain% 添加成功!
)
echo.>>%HOSTS%
echo %ip_domain% >> %HOSTS%
title 备份hosts文件
set yyyymmdd=%date:~0,4%%date:~5,2%%date:~8,2%
copy /y %HOSTS% %HOSTS%.%yyyymmdd%%hh%%mm%
echo ("%HOSTS%.%yyyymmdd%%hh%%mm%") 备份完毕,按任意键返回菜单!
title 刷新本地dns缓存并退出
echo 查看修改后的hosts文件内容,1秒后退出!
type "%HOSTS%" |findstr /v "^#"|findstr "[0-9]"
ping -n 1 127.0.0.1>nul
ipconfig /flushdns
echo 刷新本地缓存成功,即将退出!
ping -n 2 127.0.0.1>nul
echo.
exit
:: 关闭命令的回显
@echo off
:: 使用前请修改域名地址和ip地址
:: 域名地址
set url=heckjj.com
:: ip地址
set ip=192.168.1.1
:: 设置hosts文件路径
set HOSTS=C:\Windows\System32\drivers\etc\hosts
:: 判断当前路径是否存在 hosts.init 文件, 不存在则备份
if not exist %HOSTS%.init (
copy /y %HOSTS% %HOSTS%.init && echo 系统hosts文件备份完成!
)
:: %date%=2022年12月04日
:: %time%= 9:12:38:96
:: 年 yyyy = %date:~0,4% 表示指针从左到右偏移 0 位, 然后提取 4 字符
:: 月 mm = %date:~5,2% 表示指针从左到右偏移 5 位, 然后提取 2 字符
:: 日 dd = %date:~8,2% 表示指针从左到右偏移 8 位, 然后提取 2 字符
set yyyymmdd=%date:~0,4%-%date:~5,2%-%date:~8,2%
:: 时 hh = %time:~0,2% 表示指针从左到右偏移 0 位, 然后提取 2 字符
:: 分 mm = %time:~3,2% 表示指针从左到右偏移 3 位, 然后提取 2 字符
:: 秒 ss = %time:~6,2% 表示指针从左到右偏移 6 位, 然后提取 2 字符
set hh=%time:~0,2%
set mm=%time:~3,2%
set ss=%time:~6,2%
:: 当 hh 小于等于 9 时, 在前面补 0
if %hh% leq 9 (set hh=0%hh:~1,1%)
ECHO.############################## 修改系统hosts解析文件 ##############################
ECHO.#
ECHO.############################### %yyyymmdd% %hh%:%mm%:%ss% ###############################
set ip_domain=%ip% %url%
type %HOSTS% |findstr /v "^#"| findstr /i "%ip_domain%"
if %errorlevel% == 0 (
findstr /vi "%ip_domain%" %HOSTS% > C:\tmp\hosts.tmp
type C:\tmp\hosts.tmp > %HOSTS%
del /F /A /Q C:\tmp\hosts.tmp
echo %ip_domain% 更新成功!
) else (
echo %ip_domain% 添加成功!
)
echo.>>%HOSTS%
echo %ip_domain% >> %HOSTS%
title 备份hosts文件
set yyyymmdd=%date:~0,4%%date:~5,2%%date:~8,2%
copy /y %HOSTS% %HOSTS%.%yyyymmdd%%hh%%mm%
echo ("%HOSTS%.%yyyymmdd%%hh%%mm%") 备份完毕,按任意键返回菜单!
title 刷新本地dns缓存并退出
echo 查看修改后的hosts文件内容,1秒后退出!
type "%HOSTS%" |findstr /v "^#"|findstr "[0-9]"
ping -n 1 127.0.0.1>nul
ipconfig /flushdns
echo 刷新本地缓存成功,即将退出!
ping -n 2 127.0.0.1>nul
echo.
exit
12月4
#使用前请修改域名地址和ip地址
#域名地址
$url="heckjj.com"
#ip地址
$ip="127.0.0.1"
$hosts="$env:windir\System32\drivers\etc\hosts"
$content=Get-Content $hosts
if( ($content |?{$_ -imatch "\s$url"}) -eq $null){
Write-Host "Adding `'$ip` to `'$url`'"
"`n$ip $url" | Out-File -FilePath $hosts -Append -encoding ascii
Write-Host "Added success!"
}else{
$content=Get-Content $hosts | Where{$_.Indexof("$url") -eq -1}
Write-Host "update `'$ip` to `'$url`'"
$content+="$ip $url"
$content | Set-Content $hosts -Force
Write-Host "updated success!"
}
最终效果,第一次是增加,后面一直是替换原来的host记录,实际上是生写了,最开始的思路是找到域名所在的行删除该行,但发现行不通,根本没有获取域名所在行的方法,最后想着是通过获取文件内容时先过滤掉当前域名的记录,也就是只读取不包含该域名host记录的行,最后再追加就可以了。
#域名地址
$url="heckjj.com"
#ip地址
$ip="127.0.0.1"
$hosts="$env:windir\System32\drivers\etc\hosts"
$content=Get-Content $hosts
if( ($content |?{$_ -imatch "\s$url"}) -eq $null){
Write-Host "Adding `'$ip` to `'$url`'"
"`n$ip $url" | Out-File -FilePath $hosts -Append -encoding ascii
Write-Host "Added success!"
}else{
$content=Get-Content $hosts | Where{$_.Indexof("$url") -eq -1}
Write-Host "update `'$ip` to `'$url`'"
$content+="$ip $url"
$content | Set-Content $hosts -Force
Write-Host "updated success!"
}
最终效果,第一次是增加,后面一直是替换原来的host记录,实际上是生写了,最开始的思路是找到域名所在的行删除该行,但发现行不通,根本没有获取域名所在行的方法,最后想着是通过获取文件内容时先过滤掉当前域名的记录,也就是只读取不包含该域名host记录的行,最后再追加就可以了。