通过powershell远程访问postgresql数据库所在的服务器,临时开通用户访问数据库的权限,并在约定时间内关闭

该PowerShell脚本(pgallow.py)用于允许指定用户在给定的IP地址和持续时间内访问PostgreSQL数据库。它通过SSH连接到远程服务器,修改pg_hba.conf配置文件,加载新配置,并在设定时间后恢复原状。同时,脚本会终止所有非当前进程的数据库连接。
摘要由CSDN通过智能技术生成

以下是powershell的脚本内容
将脚本保存为pgallow.py

param (
    [Parameter(Mandatory = $true)][string]$user,
    [Parameter(Mandatory = $true)][string]$ip,
    [Parameter(Mandatory = $true)][string]$duration
)

# 设置数据库服务器信息
$server_ip = "192.168.2.53"
$server_user = "root"
$server_password = "123"
$server_ssh_port = 22

# 定义跨平台的 SSH 命令
$ssh_command = @"
echo '$server_password' | C:\tools\plink.exe -ssh $server_user@$server_ip -P $server_ssh_port -pw '$server_password' -hostkey 'ssh-ed25519 255 SHA256:sroxSvZ77nHCuAUKwZqSiwzMlC7U5ZmHAdOUuz5THc0' -batch -t "echo 'host all $user $ip/32 md5' >> /home/postgres/pgdata/pg_hba.conf; psql -U postgres -p 5544 -q -c 'select pg_reload_conf();'; sleep $duration; sed -i '/host all $user $ip\/32 md5/d' /home/postgres/pgdata/pg_hba.conf; psql -U postgres -p 5544 -q -c 'select pg_reload_conf(); select pg_terminate_backend(pid) from pg_stat_activity where pid <> pg_backend_pid() and client_addr = `'$ip`';'"
"@

# 运行 SSH 命令
Invoke-Expression $ssh_command

使用使用方法是.\pgallow.py 用户名 访问的用户IP 约定时间

.\pgallow.py postgres 192.168.2.1 20m

执行命令可以直接断开,20分钟之后会修改/home/postgres/pgdata/pg_hba.conf,改变原来的状态

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值