来自jenkins的远程sql脚本

时间:2017-03-02 08:32:13

标签: oracle jenkins ssh

我想在连接到带有用户ID和密码的方框后,运行一个远程方框中的sql脚本,手动步骤如下所示     
然后sudo su - fa3dev
    
账号密码:*******
    
sqlplus / as sysdba
    
连接XX_fusion_custom
    
密码*****
    
@ abc.sql
当我手动运行时,一切正常 当我从jenkins作为远程shell脚本运行时,如下所示

ssh fa3dev @ server'source .bash_profile; sqlplus xx_fusion_custom / password'

在控制台中,它为Sql提供连接和断开连接

如果我运行 ssh fa3dev @ server'source .bash_profile; sqlplus xx_fusion_custom / password; sqlplus / as sysdba; connect XX_fusion_custom; select user from dual' 它在jenkins控制台中出现意外令牌`from'附近的语法错误,我想我无法连接到数据库,这里的任何帮助都会非常有用,我无法使用SQL插件,因为我无法在jenkins框中安装oracle cleint

1 个答案:

答案 0 :(得分:0)

你的问题是在bash中,sql命令select user from dual在sqlplus退出后被执行并且bash选择了它。

您可以通过两种方式解决此问题:

  1. echo进入sqlplus:

    ssh fa3dev@server 'source .bash_profile; echo select user from dual | sqlplus xx_fusion_custom/password;sqlplus / as sysdba;connect XX_fusion_custom;'

  2. 使用该命令传递文件(如果SQL命令很多并且已修复,这很好)

  3. 2.1远程文件

    ssh fa3dev@server 'source .bash_profile; sqlplus xx_fusion_custom/password;sqlplus / as sysdba;connect XX_fusion_custom < files_with_commands.sql'
    

    2.2本地文件(注意结束'的位置从hfilename之后变为文件名之前):

    ssh fa3dev@server 'source .bash_profile; sqlplus xx_fusion_custom/password;sqlplus / as sysdba;connect XX_fusion_custom < files_with_commands.sql'