【Python】进程管理之 pexpect

相对有名的可用于自动化应用程序交互的模块,可用于 ssh、ftp 等程序。 环境:Ubuntu 20.04 LTS 最近想做一个游戏服务器管理器,以 Python 为主语言,对 Linux 上的常驻程序进行管理。需要满足: 无阻塞启动程序 实时读取程序输出 实时进行程序输入 定时进行程序重启 等功能要求。 要求不是很多,也不是很复杂,但 Pexpect 完成得不是很好。 开始 child = pexpect.spawn('ssh uesr@IP') # 执行命令 child.expect('password:') # 期待程序输出 'password:' child.sendline(my_password) # 向程序输入 my_password spawn() pexpect.spawn(command, args=[], timeout=30, maxread=2000, searchwindowsize=None, logfile=None, cwd=None, env=None, ignore_sighup=False, echo=True, preexec_fn=None, encoding=None, codec_errors='strict', dimensions=None, use_poll=False) command # 推荐直接使用命令字符串 child = pexpect.spawn('ls -latr /tmp') # pexpect 不解释 shell 元字符,如重定向、管道或通配符(>,|,*),因此需要如下使用 child = pexpect.spawn('/bin/bash -c "ls -l | grep LOG > logs.txt"') timeout 默认 30s,超时则报错。 logfile wiki: 日志文件成员打开或关闭日志记录。所有输入和输出都将复制到给定的文件对象。将 logfile 设置为 None 以停止记录。这是默认设置。将日志文件设置为 sys.stdout 以将所有内容回显到标准输出。每次写入后都会刷新日志文件。 ...

七月 27, 2021  |  388 字  |  总阅读

【Nginx】安装 SSL 证书

现在这个时代,SSL 已成了常态,没有 SSL 的网页浏览器都不让看,这里我们使用let’s encrypt 来获取「免费 SSL 证书」。 环境:CentOS 7 需求:Nginx 安装 使用 Nginx + SSL 的组合,以 Certbot 为工具安装 SSL 证书。 # 安装 EPEL repo -> Only For CentOS 7 yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rp # 安装 Certbot yum -y install yum-utils yum-config-manager --enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional yum install certbot python2-certbot-nginx # 安装 SSL certbot --nginx 建议不要一次性给所有域名授权 SSL 证书,这样大家将会使用同一个证书,有的网站就会显示「证书与域名身份不对」。别着急,一个个授权。 提示「是否 Redirect」建议选 是,这样 Certbot 将会帮你设置 Nginx,把「通往 http / 80 端口 的请求」重定向到「通往 https / 443 端口的请求」,还是非常有必要的。 就是这么简单,这就搞定了~ ...

三月 11, 2020  |  296 字  |  总阅读

【PHP】安装 PHP 7.x

环境:CentOS 7 PHP版本:7.1 | 7.2 | 7.3 | 7.4 卸载其它版本 如果实现安装了其他版本的 PHP,需先将其卸载,避免冲突。 # 查看当前版本 php -v # 列出已安装的 php 包 yum list installed | grep php # 删除所有 php 包 yum remove *php* 安装 PHP # 安装源 yum install epel-release # CentOS 7 yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm # CentOS 6 yum install http://rpms.remirepo.net/enterprise/remi-release-6.rpm # 查找库中的 php 包 yum search php # 安装 php 7.2 yum install -y php72-php-fpm php72-php-cli php72-php-xmll php72-php-mcrypt php72-php-mysqlnd php72-php-pdo php 有非常多组件,一开始并不需要装那么多,待到需要的时候再选择性安装就行了。 ...

三月 6, 2020  |  106 字  |  总阅读

【Nginx】安装 Nginx

主要内容:安装 & 配置文件介绍 & 静态网页 & 伪静态 & 加载 php-fpm 环境:CentOS 7 Nginx 版本:1.16 安装 Nginx # 安装 yum install nginx # 查看版本 nginx -v # 启动 nginx # 设置开机自启 systemctl enable nginx 这时访问 http://IP 就可以看到 Nginx 初始网页了。 如果不能访问,一般是因为防火墙未开放端口,或者未设置安全组规则,如阿里、腾讯等国内 VPS 厂商,想访问其服务器端口,需在其控制台设置 安全组规则。请参照 Firewall 防火墙管理。 Nginx 配置文件 每次修改配置文件后,都需要重载配置文件才能使其生效。 nginx -s reload 配置文件 /etc/nginx/nginx.conf 配置目录 /etc/nginx/conf.d 在配置文件中,有这样一条: # /etc/nginx/nginx.conf include /etc/nginx/conf.d/*.conf; 表示每次 Nginx 加载配置文件时,都会加载 配置目录 中的配置文件。 如果我们想在 Nginx 上部署很多 server,就可以写成一个个后缀为 .conf 的文件放入配置目录中。当然,直接在配置文件中间添加 server 段也可以,只是后期不那么容易管理。 ...

三月 6, 2020  |  487 字  |  总阅读

【MySQL】安装 MySQL

主要内容:安装 & 基本操作 & 用户管理 环境:CentOS 7 MySQL 版本:5.7 安装 MySQL # 下载 rpm 包 wget http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm # 安装 rpm 包 rpm -Uvh mysql57-community-release-el7-9.noarch.rpm # 安装 mysql yum install mysql # 检查版本 mysql --version # 启动 mysql systemctl start mysqld # 设置开机启动 systemctl enable mysqld 配置 root 用户 # 获取临时密码 grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}' # 登录 mysql -uroot -p # 修改密码安全要求(可选) set global validate_password_policy=LOW; # 修改密码为 passwd alter user 'root'@'localhost' identified by 'passwd'; # 登出 exit; MySQL 基本操作 # 查看数据库 show databases; # 创建数据库 database_name create database database_name; # 删除数据库 drop database NAME; 用户管理 创建用户 本地用户 # 赋予该用户所有权限 grant all on DATABASE_NAME.* to 'username'@'localhost' identified by 'passwd'; # 创建只读用户 grant SELECT on DATABASE_NAME.* to 'username'@'localhost' identified by 'passwd'; 可操作的数据库:database_name 用户名:username 密码:passwd 进行过权限操作后需要刷新权限。 ...

三月 6, 2020  |  157 字  |  总阅读

【Nodejs】安装 Nodejs

安装 nvm 下载安装脚本 | 运行 wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bash 添加暂时的环境变量 这将在登出 shell 后失效 export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm 添加永久的环境变量 这意味着每次登录 shell 后,会自动加载这些环境变量 echo export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")" >> /etc/profile echo "[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"" >> /etc/profile 安装 nodejs # 列出所有版本 nvm list-remote # 安装最新长期支持版 nvm install v12.16.1 # 切换版本 nvm use v12.16.1 # 设置默认版本 nvm alias default v12.16.1 # 查看版本 node -v npm -v 更改镜像源 默认镜像源太慢,改用淘宝镜像源 ...

三月 5, 2020  |  159 字  |  总阅读