一些学习中的随笔小记(五)

一些学习中的随笔小记(五)

openpyxl合并多个excel表的多个sheet

import openpyxl
import glob
new_wb = openpyxl.Workbook()

for file in glob.glob('./11月数据/*'):
    wb = openpyxl.load_workbook(file)
    for sheet_str in wb.sheetnames:
        if sheet_str not in new_wb.sheetnames:
            new_wb.create_sheet(sheet_str)

        sheet = wb[sheet_str]
        new_sheet = new_wb[sheet_str]

        for row in sheet.iter_rows(min_row=1):
            row_with_values = [cell.value for cell in row]
            new_sheet.append(row_with_values)

# openpyxl 会生成一个默认的空白Sheet
del new_wb['Sheet']
new_wb.save('test2.xlsx')

调整iptables规则的顺序

iptables -A INPUT -p tcp --dport 8443 -s 43.138.249.118 -j ACCEPT

这条命令是将规则追加到最后,对于先允许再拒绝的场景是不生效的。

需要将iptables允许的规则加到第一条。

iptables有一个“-I”选项,允许您插入新规则到指定位置。例如,要将新规则插入到第三个规则之前:

iptables -I INPUT 3 -j DROP

要将规则移动到第四个规则:

iptables -I INPUT 4 -j DROP

docker查看停止容器中的文件?

找到停止的容器。

方法一:用docker cp将文件拷贝出来

可以使用docker cp命令将停止容器的文件拷贝出来,例如:

docker cp <Container ID>:/path/to/file /host/path/to/file

用此命令可以将容器中的文件拷贝至主机中,以便查看文件内容。

方法二:找到停止容器文件在宿主机的绝对路径

docker inspect <Container ID>

docker指定远程镜像仓库

命令行指定仓库地址

docker image pull <repository>:<tag>
<!--例如-->
docker pull registry.cn-shanghai.aliyuncs.com/daniel-hub/nginx-docker:[镜像版本号]
<!--这里就是从阿里云的镜像仓库服务中拉去niginx-docker镜像-->

更换Docker远程仓库

由于国内外网络环境差异,使用国外的有时候会很慢。

# vi /etc/docker/daemon.json
{
    "registry-mirrors": ["http://hub-mirror.c.163.com"]
}
//一定要重启
systemctl restart docker
//查看docker基本信息,来验证是否生效
docker info

SQLsever数据库create file遇到操作系统错误5拒绝访问

当在sql server创建一个数据库时出现错误:尝试打开或创建物理文件 ‘G:\Test.mdf’ 时,CREATE FILE 遇到操作系统错误 5(拒绝访问)。
原因及解决方法如下:

这是因为SQL Server的启动帐户(一般是system或某个操作系统管理员),对所要存储文件的盘根目录没有创建文件的权限(此处为C盘下)。运行services.msc,在服务管理器里找到SQL Server服务(其显示名称为SQL Server (MSSQLSERVER)),右键选中后打开“属性”项,然后再TAB标签看“登录”选项卡,选中本地用户并重启服务。

具体步骤如下图所示:(一)打开服务

(二)在服务管理器里找到SQL Server服务,SQL Server (MSSQLSERVER)窗口中,查看“登录”选项卡,选中本地用户并重启服务。

(三)重新启动

SQL Server 只有mdf文件没有ldf文件的附加方法

CREATE DATABASE testDB 
ON (FILENAME = N'C:\NORTHWND.MDF') 
FOR ATTACH_REBUILD_LOG 
GO 

导入成功

Ubuntu 开启cron日志

因为Ubuntu系统默认是不打开cron日志的,cd 到/var/log目录下是找不到cron.log文件的。

首先我们把cron日志打开,如何打开,很简单,控制台输入

vi /etc/rsyslog.d/50-default.conf

打开文件,在文件中找到cron.*,把前面的#去掉,保存退出,输入

sudo service rsyslog restart

重启系统日志,然后稍微等下应该就能在/var/log目录下看到cron.log,vi cron.log就可以查看cron运行日志了。

find查找可执行文件打tar包并压缩

打包出来的文件带有目录的。

find / -type f -executable -exec tar -rvf executables.tar {} +
gzip -c executables.tar > executables.tgz

如果只想要文件不带目录。

find . -type f -executable -exec cp -t ./extracted_files {} +
tar -czvf executables.tgz ./extracted_files

find 命令中-exec结尾用+\;的区别

find命令中,+号是用来结束-exec选项的标记。它的作用是将找到的文件作为参数一次性传递给后面的命令,而不是每找到一个文件就执行一次命令。

使用+号而不是\;作为-exec选项的结束标记,可以提高命令的效率,减少命令执行的次数。

不解压查看tar包文件

tar -tf executables.tar

这只会列出文件的名称和路径,而不会解压文件或查看其内容。如果需要查看或提取特定文件,可以使用-x选项解压整个tar文件或使用-xvf选项解压并显示正在提取的文件。

tar命令常用参数

  • -c:创建新的 tar 包。
  • -x:解压 tar 包。
  • -t:列出 tar 包中的内容。
  • -r:将文件追加到现有的 tar 包中。
  • -u:仅将比 tar 包中现有文件更新的文件追加到 tar 包中。
  • -f <filename>:指定要操作的 tar 包的文件名。
  • -v:显示详细的操作过程。
  • -z:使用 gzip 压缩或解压缩 tar 包。
  • -j:使用 bzip2 压缩或解压缩 tar 包。
  • -p:保留文件的原始权限和属性。
  • -P:使用绝对路径来存储或提取文件。

为什么执行document.cookie获取不到完整的cookie?

当在浏览器的JavaScript控制台执行document.cookie时,它只返回那些HttpOnly标记为false的cookie。HttpOnly是一种cookie的安全设置,当一个cookie被标记为HttpOnly时,它不能被JavaScript访问。这是为了防止跨站脚本攻击(XSS攻击)。

而在浏览器的开发者工具的Application面板中,能看到所有的cookie,包括那些HttpOnly的cookie。这是因为这个面板直接展示了浏览器存储的cookie,不受HttpOnly设置的影响。

所以如果控制台执行document.cookie时看不到某个cookie,那可能是因为它被设置为了HttpOnly

macos中使用xattr 命令清除 app 的隔离属性

从网上下载的可执行文件,macos会提示无法打开“xxx”,因为无法验证开发者。
macos无法验证此 App 是否包含恶意软件。

用xattr命令可以用来解决某些应用程序出现提示无法打开时的情况,这样在打开应用时,系统就不会再提示应用被隔离或者来自互联网的警告了。

sudo xattr -r -d com.apple.quarantine ${file}

cp 拷贝文件保持源文件的时间属性

使用 cp 命令的 -p 选项来保留文件的时间戳以及其他属性。

cp -p file1.txt file2.txt

虽然mtime没有变,但是ctime还是改变了。

macos 修改mac地址

sudo /System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport -z
sudo ifconfig en0 ether 你的 mac 地址
networksetup -detectnewhardware

根目录执行chmod -R 777 / 补救的方法

对于某些已知的文件或目录,可以手动恢复它们的权限。例如,大多数目录应该有755权限,大多数文件应该有644权限。

如果有备份,可以在另一台相同的系统上运行

getfacl -R / > permissions.txt

命令来获取所有文件和目录的权限,然后在出问题的系统上使用

setfacl --restore=permissions.txt

命令来恢复这些权限。

有MySQL数据库文件,但不知道账号密码的情况下如何读取表内容?

如果有一个 MySQL 数据库的物理文件(例如 *.ibd 和 *.frm 文件),但没有对应的 MySQL 服务器的访问权限,可以尝试以下步骤来读取数据:

  1. 首先,安装一个 MySQL 服务器版本最好和之前的一致。
  2. 创建一个新的数据库和表,和想要读取的数据库文件有相同的表结构。这一步非常重要,因为 *.ibd 文件并不包含表结构信息,这些信息存储在 *.frm 文件中。
  3. 关闭的 MySQL 服务器。
  4. 复制的 *.ibd 文件到新建数据库的目录下,替换新建的对应文件。
  5. 启动的 MySQL 服务器。
  6. 使用 SELECT 语句读取表数据。

需要注意的是,这个方法可能无法在所有情况下工作,特别是在的数据文件损坏或者与的 MySQL 版本不兼容的情况下。此外,这个方法需要知道表的结构,否则将无法正确创建新表。

或者用数据库恢复工具直接读取数据表内容也是可行的。

Linux如何开启虚拟内存

在CentOS 7中开启虚拟内存(即配置交换空间)的步骤与大多数Linux发行版类似,主要涉及创建交换文件、设置交换区和启用交换。以下是详细步骤:

1. 检查现有的交换空间

首先,检查系统是否已经配置了交换空间:

sudo swapon --show

如果这个命令没有输出,意味着系统没有配置交换空间。

2. 创建交换文件

假设你想创建一个4GB的交换文件,你可以使用以下命令。这个大小可以根据你的系统需求进行调整:

sudo fallocate -l 4G /swapfile

如果fallocate命令不可用,可以使用dd命令创建:

sudo dd if=/dev/zero of=/swapfile bs=1M count=4096

3. 设置交换文件的权限

为了保证安全性,只有root用户应该有权限读写交换文件:

sudo chmod 600 /swapfile

4. 创建交换空间

通过以下命令,将文件设置为交换空间:

sudo mkswap /swapfile

5. 启用交换空间

现在,启用刚刚创建的交换空间:

sudo swapon /swapfile

6. 使交换空间永久有效

为了确保在重启后交换空间依然有效,需要把它添加到/etc/fstab文件中:

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

7. 调整swappiness参数(可选)

vm.swappiness参数控制内核交换数据的倾向。值范围从0到100,较低的值减少交换操作,较高的值使其更积极。可以通过以下命令查看当前的swappiness值:

cat /proc/sys/vm/swappiness

临时更改swappiness值,例如设置为20:

sudo sysctl vm.swappiness=20

要永久更改,编辑/etc/sysctl.conf文件,添加或修改以下行:

vm.swappiness=20

然后重新加载sysctl配置:

sudo sysctl -p

以上步骤将在CentOS 7上配置和启用虚拟内存。这些操作需要root权限。

赞赏

微信赞赏支付宝赞赏

Zgao

愿有一日,安全圈的师傅们都能用上Zgao写的工具。

发表评论