以下是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,改变原来的状态