分类 开发 下的文章

[linux]抓包工具tcpdump提示无权限

前言

最近我公司一个视频服务,某些客户总是会卡顿,遂要排查,网络组同事排查后,觉得没问题,但近期的确没有进行过系统变更。
没办法,只能在本机分析下具体原因了。

tcpdump

因为之前不是很专注做运维,只能简单的进行运维工作,对于tcpdump也是网络同事给的代码,让我在服务器上跑。

脚本如下:

tcpdump port 1234 or 4321 -G 600 -w /home/xxx/tcpdump/%Y_%m%d_%H%M_%S.pcap

在测试环境运行的好好的,跑到生产上一跑,当!

提示没有权限

提示如下:

tcpdup: /home/xxx/tcpdump/%Y_%m%d_%H%M_%S.pcap : Permission denied

我已经是用root用户进行操作了,怎么还会没有权限呢?

解决

代码改为如下:

tcpdump port 1234 or 4321 -G 600 -w /home/xxx/tcpdump/%Y_%m%d_%H%M_%S.pcap -Z root

可以看到加了-Z选项,使用-Z用户指定特定用户即可。

[python]连接oracle数据库

前言

最近打算做一个小工具,能够自动连接oracle数据库,查出其中的某条记录,并且返回。原本想用java来写,但是java不够灵活,而且现在公司很多同事都在学习python,为了以后维护方便,自然要用python来搞了

安装oracle client

略过,这一块其实网上教程很多了

安装cx_oracle

之心

python -m pip install cx_Oracle --upgrade

结果报错,直接方法2(使用whl安装)

- 阅读剩余部分 -

[typecho]批量插入的做法

前言

最近想起写推特删除的插件,就往下做了点,结果发现,批量插入推文ID的时候,速度很慢,翻了下TYPECHO 关于DB的代码,发现都是自动提交事务的模式。必须得改,涉及到底层的修改(只是返回了两个私有的对象),修改之后,速度提升了不是一点半点,基本上毫秒级就能插入完成,原先要十几秒。

调整

修改home/var/Typecho/Db/Adapter/Pdo.php,增加


 public function getObject(){
        return $this->_object;
    }

修改home/var/Typecho/Db.php,增加

public function getAdapter(){
        return $this->_adapter;
}

使用

因为是pdo,抽象了具体的数据库实现,事务直接启动,最后提交,都是一样的操作,比如下面的代码:

        $sql = "INSERT INTO ".$prefix."tabletable(id_str,stete)  VALUES(?,?)";
        //改了两个文件就为了取到这个
        $stmt = $this->db->getAdapter()->getobject()->prepare($sql);
        $stmt->bindParam(1, $id_str);
        $stmt->bindParam(2, $state);
        //开启事务
        $this->db->getAdapter()->getobject()->beginTransaction();
        for ($x=0;$x<sizeof($ids);$x++) {
            $id_str=$ids[$x];
            $state=$st[$x];
            $stmt->execute();
        }
        //提交事务
        $this->db->getAdapter()->getobject()->commit();

[typecho]做了一个书架插件

前言

之前用的插件是熊猫小A写的一个同步豆瓣的插件,但现在不能用了,提示豆瓣的api接口过期。网上搜索了很久都没有找到能用的api。于是,就参考他的插件代码,改了一份本地化版的插件。

因为换工作了,时间多起来,现在做运维方面的工作,开发倒是生疏了很多,这个插件前端大量使用了熊猫小A的代码,后端的代码,参考了一些方法。有兴趣的可以自己翻阅。

特性1

  1. 采用api.jike.xyz 提供的书籍接口
  2. 目前只能单个提交ISBN编码,加入书架
  3. 书籍信息落地到数据库中存储
  4. 后台管理书籍
  5. 后台管理支持按书籍状态筛选
  6. 缓存生成cache/book.json,移除了缓存到期配置,每次添加书籍,修改书籍等操作都会自动刷新缓存。
  7. 移除了单本书节点
  8. [熊猫小A]支持单个节点的方式插入HTML代码
  9. 移除了豆瓣电影(这只是书架插件,无关电影类)
  10. [熊猫小A]使用wordpress缓存豆瓣图片
  11. 书籍分页

特性2

由于博文的内容局限性,我将更新的内容列到特性2中,以供诸君阅览

1.支持书籍分类展示(我抛砖引玉我的2021阅读记录
2.因api.jike.xyz接口调用需要token,改了后端接口
3.增加阅读数量的显示



- 阅读剩余部分 -

[vscode]升级到1.59版本后, vscode-sftp 插件无法使用的问题

前言

vscode自动升级到1.59的版本后,其中的插件vscode-sftp不能上传文件了。

提示:No Such file

排查

我先排查了自己最近是否有调整过sftp的配置文件,发现最后修改还是几个月前,而几个月前还是用的好好的。

然后排除了网络,因为download能够把文件同步下来。

发现原因

找到sftp的插件目录,按照提示的信息找到对应的代码,发现用的是sftp-stream这个库,于是上去找,究竟是被我找到了:Fix error "No such file" when using SFTP extension on vscode > v1.55.2. #174

解决

按照Fix error "No such file" when using SFTP extension on vscode > v1.55.2. #174上面的方式去修改即可,修改玩重启vscode,不然不生效哦

[PHP]修改upload_max_filesize无效的问题

前言

PHP做插件的过程中,发现上传的zip文件,大于8M的会直接中断传输,印象中我已经改过了upload_max_filesize设置为300M了呀。

解决

修改php.ini中的upload_max_filesize为300M后,还要检查下:post_max_size,这玩意儿一般会忘记,也将这个设置为300M后解决问题。

附加配置

file_uploads = On

upload_max_filesize = 300M
post_max_size=300M

max_file_uploads = 20

附加phperror.log

[13-May-2021 09:17:02] NOTICE: fpm is running, pid 1
[13-May-2021 09:17:02] NOTICE: ready to handle connections
NOTICE: PHP message: PHP Warning:  POST Content-Length of 8630132 bytes exceeds the limit of 8388608 bytes in Unknown on line 0
NOTICE: PHP message: PHP Warning:  POST Content-Length of 8630132 bytes exceeds the limit of 8388608 bytes in Unknown on line 0
NOTICE: PHP message: PHP Warning:  POST Content-Length of 8630132 bytes exceeds the limit of 8388608 bytes in Unknown on line 0
NOTICE: PHP message: PHP Warning:  POST Content-Length of 8630132 bytes exceeds the limit of 8388608 bytes in Unknown on line 0
NOTICE: PHP message: PHP Warning:  POST Content-Length of 8630132 bytes exceeds the limit of 8388608 bytes in Unknown on line 0
NOTICE: PHP message: PHP Warning:  POST Content-Length of 8630132 bytes exceeds the limit of 8388608 bytes in Unknown on line 0
[13-May-2021 09:39:11] NOTICE: Finishing ...
[13-May-2021 09:39:11] NOTICE: exiting, bye-bye!
[13-May-2021 09:39:14 UTC] PHP Warning:  Module "redis" is already loaded in Unknown on line 0
[13-May-2021 09:39:14] NOTICE: fpm is running, pid 1
[13-May-2021 09:39:14] NOTICE: ready to handle connections

[docker]PHP8开启zip支持

前言

最近在整理推特的推文批量删除的功能,就是支持删除所有推文的功能,其中有用到压缩解压的类,综合考虑,打算使用linux中的libzip-dev依赖,为此搜索了好多地方,网上的介绍不尽相同,我这里将我真实能用的配置方式发出来,以供后续如果要继续操作的时候,可以用的上。

安装

因为我是在php4docker中使用的,所以我首先就是要查对应的extension怎么装,查看官方文档Installation
很简单,有个老哥已经说了要怎么操作了

首先是安装zlib1g-dev,libzip-dev,zip,其中zlib1g需要指定稍低一点的版本,我这里指定了1:1.2.8.dfsg-5,否则则会无法通过依赖。

之后是安装docker-php-ext,看下面代码
docker-php-ext-install mysqli pdo pdo_mysql zip

配置

这样镜像就整理好了,接下来修改php配置文件,如果不修改的话,还是会提示zipArchive找不到
php.ini增加extension = zip.so,之后重启php即可。

docker-compose中重新编译运行

直接使用build命令:docker-compose build;

测试

    private function unzip($filepath){
        if (empty($filepath)) {
            return false;
        }
        $zip = new ZipArchive();
        if ($zip->open($filepath) === true) {
            $zip->extractTo("/tmp/".$this->widget('Widget_User')->uid,"twitter.js");
            $zip->close();
            return true;
        }
        else{
            return false;
        }
    }

参考:

  1. install
  2. Docker image build with PHP zip extension shows “bundled libzip is deprecated” warning