Linux下如何运行sql脚本

Linux下如何运行sql脚本,第1张

Linux运行sql脚本的具体 *** 作步骤如下:

1、使用shell工具登陆到安装postgresql的服务器,切换到postgres用户,postgresql默认的 *** 作用户,命令是:su - postgres,查看当前路径是/var/lib/psql,创建一个test.sql脚本文件,命令是:vim test.sql。

2、sql脚本内容是:create table test (id int not null primary key,name text)insert into test valus(1, 't1')

3、执行test.sql脚本,命令是:psql -f test.sql

这里是因为postgresql安装本机上,在第一步中我们切换到了postgres用户,因此这里默认就是postgres用户来 *** 作,不用带上用户名和密码。执行结果如下,可以看到有两个提示:

create table

insert 0 1

执行完成后,我们登入数据库,命令是:psql

4、进入psql交互式命令行后,我们执行两个查看命令:\d

可以看到表test确实已经创建成功,然后执行命令:\d test

可以看到表中字段是id和name,和我们创建语句中内容一样,说明第一条语句执行成功。

5、查看表中数据,命令是:select * from test

显示出来的值是1,t1,说明第二条执行语句也执行成功,说明test.sql脚本执行成功。

6、默认是postgres用户,本机 *** 作是,不需要用户和密码,现在我们来试试 *** 作远程linux服务器上的postgresql,也就是说执行本地的脚本文件,在远程服务器上创建表。如下面图中所示,命令是:psql -U test1 -h 192.168.1.194 -f test.sql,输入对应用户的密码。

7、登陆到这个远程服务器上,命令是:psql -U test -h 192.168.194

执行查看命令:\d,\d test

最后查询数据库:select * from test结果和上面都一致。

package org.shirdrn.shellimport java.io.IOExceptionimport java.io.InputStreamimport java.nio.charset.Charsetimport ch.ethz.ssh2.Connectionimport ch.ethz.ssh2.Session/** * 远程Shell脚本执行工具 * * @author Administrator */ public class RemoteShellTool { private Connection connprivate String ipAddrprivate String charset = Charset.defaultCharset().toString()private String userNameprivate String passwordpublic RemoteShellTool(String ipAddr, String userName, String password, String charset) {this.ipAddr = ipAddr this.userName = userName this.password = password if(charset != null) { this.charset = charset } } /** * 登录远程Linux主机 * * @return * @throws IOException */ public boolean login() throws IOException {conn = new Connection(ipAddr) conn.connect()// 连接return conn.authenticateWithPassword(userName, password)// 认证 } /** * 执行Shell脚本或命令 * * @param cmds 命令行序列 * @return */ public String exec(String cmds) {InputStream in = null String result = "" try { if (this.login()) { Session session = conn.openSession()// 打开一个会话 session.execCommand(cmds) in = session.getStdout() result = this.processStdout(in, this.charset) conn.close()}} catch (IOException e1) { e1.printStackTrace() }return result} /** * 解析流获取字符串信息 * * @param in 输入流对象 * @param charset 字符集 * @return */ public String processStdout(InputStream in, String charset) {byte[] buf = new byte[1024] StringBuffer sb = new StringBuffer() try { while (in.read(buf) != -1) { sb.append(new String(buf, charset))}} catch (IOException e) { e.printStackTrace() }return sb.toString()} }

第一步:规划在连通bat�’.shell之前要先把windows和windows之间的关系,linux和linux之间的关系打通。 windows之间用net use 进行连接,linux之间使用ssh进行连接第二步:打地基PS:以下所有运行环境都是在超级管理员下运行,省的跳出一些乱七八糟的东西阻碍造桥大计。windows间可用net use进行测试,查看是否能相连的。例:net use \\192.168.1.124\ipc$ "123456" /user:"administrator"net use \\ip地址\ipc$ "密码"/user:"用户名"这个密码和用户名都是要连接过去那台机子的密码和用户名的若出现以下提示就证明连接成功当然万事都是没有这么顺利的。。。例如。。。像这么些乱七八糟的错误基本就是网络不通啊,ip地址有误,用户名密码有误之类造成的。。。所以得多多利用度娘、谷姐之类的神器进行解决。或许有时候可能还会用到以下一些命令net use 来查看哪些是存在的net use \\192.168.1.210\ipc$ /del 用来删除连接windows的连接方式就是如此。在你的客户机上用同样的方法去测试需要加入批量关机大军的windows服务器。linux间通信使用ssh方式来进行。先进行配置linux间ssh双机互信机制,这样就可以使两机之间通信不需要输入密码进行访问,将密码全部隐藏起来,这样也起到了安全作用。关于ssh双机信任机制可以我之前的博客上查看 http://alwaysyunwei.blog.51cto.com/3224143/1222601第三部:架桥现在linux机器上写一个shell脚本进行批量关机其中ip.txt存放要批量关机的linux机器ip当然shutdown_boot.sh应该像下面这样写,而不是图片中的那样,图片中的内容只是我做测试用的。#!/bin/shfor ip in `cat ip.txt`dossh $ip <<EOFecho "{$ip} shutdown now..."ifconfiginit 0EOFdonessh 192.168.1.216 -p10088<<EOFecho "shutdown 192.168.1.216 now...."ifconfiginit 0EOF因为在我的正式环境中216这台机子SSH端口比较特殊,所以单独剥离出来。桥的一端已搭好,现在搭建另一端,windows下bat脚本来进行windows批量关机建立一个shutdown.bat文件写入以下内容#批量关闭windows机器net use \\192.168.1.249\ipc$ "12345" /user:"administrator"shutdown -s -f -t 20 -m \\192.168.1.249net use \\192.168.1.254\ipc$ "123456" /user:"administrator"shutdown -s -f -t 20 -m \\192.168.1.254net use \\192.168.1.210\ipc$ "123456" /user:"administrator"shutdown -s -f -t 20 -m \\192.168.1.210桥的另一端也搭好了最后一步就是把两端连起来这时候就要请出我们的putty工具可谷姐、度娘下载一个第一次要进行手动连接用这个工具进行连接shell脚本所在的那台机子填上IP和端口即可。然后进行连接,会提示输入用户名和密码,登入完后就出现sshhostkeys文件夹然后把shutdown.bat文件放入到跟这文件夹同级目录下。在bat文件添加以下内容#批量关闭linux机器D:cd puttyfile_0.62cnputty.exe -ssh -pw 123456-m test.sh root@192.168.1.241简单说下这个语法putty.ext -ssh -pw 密码 -m 要在linux执行的文件 用户名@IP地址其中test.sh也是放在sshhostkeys同级目录下,里面写上你要向linux执行的命令#!/bin/shcd /opt/script/shell#mkdir /tmp/test061502sh shutdown_boot.sh#mkdir test06170最终的结果就是以下内容了shutdown.battest.sh这样就大功告成第四步:后期工作按照这个流程可以完成最初的要求,但这样会存在很多的安全问题,密码明码就是一个问题,这个还有待研究看要怎样处理。另外一个,在这个bat文件中最好加一个时间判断,比如晚上6点后点击执行这个bat文件可以正常运行,其他时间段点击时则出现告警,以防误操作导致关机。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8633733.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-19
下一篇2023-04-19

发表评论

登录后才能评论

评论列表(0条)

    保存