我有一个shell脚本,其中包含一个ips列表。
在该脚本的for循环下,每次挑选15 ips并将状态更改为'删除'。
有些专家可以说明如何在shell脚本for循环下更新那些ips列表? 这意味着我应该从shell脚本的for循环内部做些什么来对PostgreSQL数据库进行连续更改?
答案 0 :(得分:3)
您可以使用命令行工具psql
更改PostgreSQL数据库。如果您有更新所需的密码,则可以设置PGPASSWORD环境变量。例如:
PGPASSWORD="mypassword" psql -U username -c database "statement"
如果不需要密码,请执行
psql -U username -c database "statement"
如果访问不需要用户名,则可以
psql -c database "statement"
对于要更改的随机IP,我要使用psql
创建一个包含所有IP的数组
SELECT * FROM ips;
然后创建15个随机数,将它们用作索引(当然你必须确保没有创建两次随机数),然后将它们设置为在数据库中删除的状态。
阅读评论后: 要更新,您可以这样做:
updateIP=`echo ip_string | awk -F' ' '{print $1}'`
psql -U user -c database "UPDATE iptable SET status='status_removed' WHERE ip='${updateIP}';"
要更新单个记录,您可以将IP存储在表格中,然后输入#34; iptable"输入列" ip"列"状态"。
下的状态答案 1 :(得分:0)
psql -U pgsql -d database -c "statement"
至少对于基于FreeBSD的系统,上述声明适用。在postgres 10中,这些标志是不同的。对于Linux,同样可能也是这样。