我想在连接到带有用户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
答案 0 :(得分:0)
你的问题是在bash中,sql命令select user from dual
在sqlplus退出后被执行并且bash选择了它。
您可以通过两种方式解决此问题:
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;'
使用该命令传递文件(如果SQL命令很多并且已修复,这很好)
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'