网站离开河蟹国了!

经过这几年的折腾,2010年已经将之前托管的服务器退了,不再继续续租下去,阿拉下载的将来目前还没有明确的定位,目前暂时作为我的个人博客来维持下来。

每天将不定期的来更新一些我的日常砸碎资料。

简单干净的Openwrt ipv6配置,局域网WAN6中继模式获取原生ipv6地址,无需PD

前提条件

openwrt 测试固件版本:OpenWrt R20.10.20 / LuCI Master (git-20.256.12360-1a54222)
LAN、WAN、WAN6全部为默认设置
WAN6 已自动获取到ipv6地址, 无IPv6-PD也可

备份 /etc/config/dhcp

cp /etc/config/dhcp /etc/config/dhcp.bak

修改 dhcp 配置

1. 修改 /etc/config/dhcp1. 修改 /etc/config/dhcp

有则改之,无则添加。自己稍微检查一下与已有的配置是否有明显冲突,有就把旧配置项删了

config dhcp 'lan'
        option interface 'lan'
        option start '100'
        option limit '150'
        option leasetime '12h'
        # new things from here
        option ra 'relay'
        option dhcpv6 'relay'
        option ndp 'relay'

config dhcp 'wan'
        option interface 'wan'
        option ignore '1'
        # new things from here
        option ra 'relay'
        option dhcpv6 'relay'
        option ndp 'relay'
        option master '1'

如果有Wan6,可以这样设置,其实这里的Wan和Wan6是同一个接口

config dhcp 'lan'
        option interface 'lan'
        option start '100'
        option limit '150'
        option leasetime '12h'
        option dhcpv6 'relay'
        option ra 'relay'
        option ndp 'relay'

config dhcp 'wan'
        option interface 'wan'
        option ignore '1'

config dhcp 'wan6'
        option interface 'wan'
        option dhcpv6 'relay'
        option ra 'relay'
        option ndp 'relay'
        option master '1'

2. 修改完成后重启 odhcpd

/etc/init.d/odhcpd restart

3. 启动脚本

在开机启动脚本/etc/rc.local中添加如下脚本,每次开机系统启动30秒后重启odhcpd服务(可在完全测试通过后再添加)

sleep 30
/etc/init.d/odhcpd restart

参考:OpenWRT IPv6 三种配置方式

测试

访问东北大学ipv6测速网站:http://speed.neu6.edu.cn/

后续排错

若上述操作完成后无法访问ipv6网站,则进行下列检查。

网络->DHCP->高级设置 中勾选了 禁止解析 IPv6 DNS 记录 --> 取消勾选
网络->负载均衡->策略中备用成员 是 不可达(拒绝) --> 更改为 默认(使用主路由表)
尝试关闭ipv6防火墙
在/etc/config/firewall中,config defaults下第一行添加:

option disable_ipv6 '1'

参考1:https://v2ex.com/t/700446
参考2:https://x.medemede.cn/archives/jian-dan-de-gan-jing-de-o-p-e-n-w-r-t--i-p-v-6-pei-zhi--ju-yu-wang-w-a-n-6-zhong-ji-mo-shi-huo-qu-yuan-sheng-i-p-v-6-de-zhi--wu-xu-p-d

PowerShell中将CSV文件转换为EXCEL文件

一直在研究PowerShell,针对CSV文件转换成EXCEL文件(XLSX)一直没找到比较合适方法,查询了许多资料后,整理出来一下这个脚本,目前测试下来速度还不错。

#Define locations and delimiter
$csv = "D:\Test\20210505_042018.csv" #Location of the source file
$xlsx = "D:\Test\20210505_042018.xlsx" #Desired location of output
$delimiter = "," #Specify the delimiter used in the file

# Create a new Excel workbook with one empty sheet
$excel = New-Object -ComObject excel.application 
$workbook = $excel.Workbooks.Add(1)
$worksheet = $workbook.worksheets.Item(1)
$worksheet.Cells.NumberFormat = "@"

# Build the QueryTables.Add command and reformat the data
$TxtConnector = ("TEXT;" + $csv)
$Connector = $worksheet.QueryTables.add($TxtConnector,$worksheet.Range("A1"))
$query = $worksheet.QueryTables.item($Connector.name)
$query.TextFileOtherDelimiter = $delimiter
$query.TextFileParseType  = 1
$query.TextFilePlatform = 65001
$query.TextFileColumnDataTypes = ,2 * $worksheet.Cells.Columns.Count
$query.AdjustColumnWidth = 1

# Execute & delete the import query
$query.Refresh()
$query.Delete()

# Save & close the Workbook as XLSX.
$Workbook.SaveAs($xlsx,51)
$excel.Quit()

excel2016双击无法打开xlsx文件的解决方法

网上基本提供的方法就是修改注册表的一个地方,可是我的还是不行,后来找到资料还有一个地方,最后将两个地方都修改了,最后成功双击打开文件。

1、打开注册表编辑器“regedit”;
2、定位到如下项目“HKEY_CLASSES_ROOT\Excel.Sheet.12\shell\Open\command”;
3、编辑原有的内容,在最后添加”%1”.
如:原参数为”C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE”
则:新参数为”C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE” “%1”
1、按下win+R后,输入regedit后回车,进入注册表编辑器。
2、在左边的列表里定位到HKEY_Current_User\Software\Microsoft\Office\16.0\excel文件夹
3、把这个excel文件夹直接重命名为excel.old

Powershell上传大文件到子目录下

#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SharePoint.Client\v4.0_16.0.0.0__71e9bce111e9429c\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SharePoint.Client.Runtime\v4.0_16.0.0.0__71e9bce111e9429c\Microsoft.SharePoint.Client.Runtime.dll"
Add-Type -Path "C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SharePoint.Client.Publishing\v4.0_16.0.0.0__71e9bce111e9429c\Microsoft.SharePoint.Client.Publishing.dll"
Add-Type -Path "C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SharePoint.Client.Search\v4.0_16.0.0.0__71e9bce111e9429c\Microsoft.SharePoint.Client.Search.dll"
Add-Type -Path "C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SharePoint.Client.DocumentManagement\v4.0_16.0.0.0__71e9bce111e9429c\Microsoft.SharePoint.Client.DocumentManagement.dll"

#Set parameter values
$SiteURL="https://one.sharepoint.com/"
$SourceFilePath="D:\Files\TM1.xlsx"
$TargetFolderRelativeURL ="/Shared Documents"
$User = "jz@one.com"
$Password = "P@ssword"  | ConvertTo-SecureString -AsPlainText -Force

#Bind to site collection
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($User,$Password)
$Ctx.Credentials = $Credentials

Try {
    #Setup the context
    $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
    $Ctx.Credentials = $Credentials

    #Get the Target Folder to upload
    $Web = $Ctx.Web
    $Ctx.Load($Web)
    $TargetFolder = $Web.GetFolderByServerRelativeUrl($TargetFolderRelativeURL)
    $Ctx.Load($TargetFolder)
    $Ctx.ExecuteQuery() 

    #Get the source file from disk
    $FileStream = ([System.IO.FileInfo] (Get-Item $SourceFilePath)).OpenRead()
    #Get File Name from source file path
    $SourceFileName = Split-path $SourceFilePath -leaf  
    $TargetFileURL = $TargetFolderRelativeURL+"/"+$SourceFileName

    #Upload the File to SharePoint Library Folder
    $FileCreationInfo = New-Object Microsoft.SharePoint.Client.FileCreationInformation
    $FileCreationInfo.Overwrite = $true
    $FileCreationInfo.ContentStream = $FileStream
    $FileCreationInfo.URL = $TargetFileURL
    $FileUploaded = $TargetFolder.Files.Add($FileCreationInfo)  
    $Ctx.ExecuteQuery()  

    #Close file stream
    $FileStream.Close()
    Write-host "File '$TargetFileURL' Uploaded Successfully!" -ForegroundColor Green
}
catch {
    write-host "Error Uploading File to Folder: $($_.Exception.Message)" -foregroundcolor Red
}

PowerShell上传文件到SharePoint子目录下

今天客户有一个需求,需要每天定时产生的报表文件上传SharePoint服务器上,网上找了资料,可以上传到相应的根目录下,就是不能上传到子目录下,测试了很多方法都不行,最后在下班的路上通过手机找到了相关资料,进行了一顿修改后,成功将文件放置到客户SharePoint的指定目录下。
原文连接(英文

如果Windows服务器上没有安装过Sharepoint,那就需要安装一个SharePoint Server 2016 Client Components SDK,安装之后需要确定两个DLL文件的对应位置,在执行PowerShell脚本的时需要用到的,具体可以参考我脚本。

#Add references to SharePoint client assemblies and authenticate to Office 365 site – required for CSOM
#Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"
#Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
Add-Type -Path "C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SharePoint.Client\v4.0_16.0.0.0__71e9bce111e9429c\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SharePoint.Client.Runtime\v4.0_16.0.0.0__71e9bce111e9429c\Microsoft.SharePoint.Client.Runtime.dll"

#Specify tenant admin and site URL
$User = "jzh@one.com"
$SiteURL = "https://one.sharepoint.com/sites/Partners/"
$Folder = "D:\username\test\"
$DocLibName = "Documents"
$FolderName = "Analytics"
$Password = "P@ssword"  | ConvertTo-SecureString -AsPlainText -Force

#Bind to site collection
$Context = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Creds = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($User,$Password)
$Context.Credentials = $Creds

#Retrieve list
$List = $Context.Web.Lists.GetByTitle($DocLibName)
$Context.Load($List.RootFolder)
$Context.ExecuteQuery()

#Retrieve folder
$FolderToBindTo = $List.RootFolder.Folders
$Context.Load($FolderToBindTo)
$Context.ExecuteQuery()
$FolderToUpload = $FolderToBindTo | Where {$_.Name -eq $FolderName}

#Upload file(s)
Foreach ($File in (dir $Folder -File))
{
    $FileCreationInfo = New-Object Microsoft.SharePoint.Client.FileCreationInformation
    $FileCreationInfo.Overwrite = $true
    $FileCreationInfo.Content = [System.IO.File]::ReadAllBytes($File.FullName)
    $FileCreationInfo.URL = $List.RootFolder.ServerRelativeUrl + "/" + $FolderName + "/" + $File.Name
    $UploadFile = $List.RootFolder.Files.Add($FileCreationInfo)
    $Context.Load($UploadFile)
    $Context.ExecuteQuery()
}

解决Excel 2016无法直接打开文件的问题

新安装的OFFICE 2016发现从邮件中、微信中都无法直接打开Excel文件,查询了解决方法有2个,大家可以试试看。

1、修改注册表,位置:计算机\HKEY_CLASSES_ROOT\Excel.Sheet.12\shell\Open\command,在最后添加一下“%1”的参数,如果原来有其他参数“DDE”之类的删除,最后的结果为

"C:\Program Files\Microsoft Office\Root\Office16\EXCEL.EXE" "%1"

2、在选项-->高级中取消“忽略使用动态数据交换(DDE)的其他应用程序”前的勾选。

Windows远程桌面连接出现CredSSP的解决方法

今天远程桌面的时候失败了,出现以下提示"CredSSP加密Oracle”错误

于是上网找解决办法,经过测试,该方法是可行的。

首先,在控制台中输入regedit,打开注册表

接着按照以下目录依次展开HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\,接着在System目录下创建两级文件夹,也就是新建项,CredSSP\Parameters,

然后再Parameters下右键-》新建DWORD 32位,修改名称AllowEncryptionOracle。

双击修改值为2.

之后去试一下远程连接桌面,应该就可以了。

RDP 优化操作 微软远程桌面 开启显卡加速、60FPS、USB设备重定向

有一说一,Windows自带的远程桌面服务(RDP)非常优秀,不考虑云服务(可以自己搭建)的情况下,在表现上可以胜过任意一款第三方远程控制软件(包括且不限于VNC、Teamviwer……),毕竟是原生功能。

RDP本身是可以无显卡运行的,显示远程桌面的时候并不调用显卡,可以做一些基本的管理操作。最近研究了一下怎样将提升RDP的性能,开启显卡加速(OpenGL,DX支持),提高传输帧率(默认30fps,设置为60fps),以及USB设备重定向(将客户端的USB设备挂载到远程主机,不需要USB Network Gateway)

Continue reading "RDP 优化操作 微软远程桌面 开启显卡加速、60FPS、USB设备重定向"

Windows系统下的免费SFTP服务器软件

FreeSSHD SFTP Server
其实是有2个软件,一个是freeSSHd,一个是freeFTPd。
freeSSHd 的 sftp,所有用户只有一个 sftp 的主目录。
freeFTPd 的 sftp,可以给不同的用户设定不同的目录。

freeSSHd 可以设置系统账号、公钥、密码的登录方式,不像 xlight 只能在密码、公钥里二选一。
freeFTPd 可以设置系统账号、密码、匿名的登录方式。

Continue reading "Windows系统下的免费SFTP服务器软件"