Linux 在远程服务器::上执行Shell脚本时,未找到sqlplus:命令
我有两台服务器服务器A,它有一个shell脚本--“Process\u Backup.sh” 我在服务器A-“./Process_Backup.sh”上执行了这个脚本,它执行得很好。基本上,这个脚本连接到服务器A上的oracle数据库并执行一个过程 我需要做的是从不同的服务器B在服务器A上执行脚本“Process\u Backup.sh” 我尝试从服务器B执行命令Linux 在远程服务器::上执行Shell脚本时,未找到sqlplus:命令,linux,shell,Linux,Shell,我有两台服务器服务器A,它有一个shell脚本--“Process\u Backup.sh” 我在服务器A-“./Process_Backup.sh”上执行了这个脚本,它执行得很好。基本上,这个脚本连接到服务器A上的oracle数据库并执行一个过程 我需要做的是从不同的服务器B在服务器A上执行脚本“Process\u Backup.sh” 我尝试从服务器B执行命令 ssh test@server1.xxx.com "cd Scripts/Shell; ./Process_Backup.sh"
ssh test@server1.xxx.com "cd Scripts/Shell; ./Process_Backup.sh"
但我有以下错误-
line 49: sqlplus: command not found
我在服务器A上安装了所有软件,所以不确定为什么会出现此错误。我不熟悉linux环境。我已经看完了这里贴出的大部分问题,但我的问题似乎是另一种情况
非常感谢您的帮助Oracle安装了一个文件
oraenv
,该文件设置了一些环境变量,包括sqlplus
等命令所在的路径。启动登录shell时会包含该文件,执行该操作的命令可能是由安装程序创建的
使用
文件
oraenv
可能在/usr/local
下面的某个地方,我不明白如果我正在连接到服务器A,脚本是否不会在服务器A上执行?为什么我们需要在服务器B上安装oracle客户端。你能告诉我一些我可以阅读的东西吗。。我的基本知识可能还不清楚。我完全误解了你的问题。我以为您试图在B上运行/Process\u Backup.sh
。我将删除我的第一条注释以避免混淆。当通过ssh
调用命令时,它不会为bash
shell提供登录名的rc脚本,例如.bash\u profile
和.bashrc
,或.login
和.cshrc
用于csh
外壳,或.profile
用于sh
和dash
外壳。作为您传递的命令的一部分,或者在.Process\u Backup.sh
中生成环境变量,或者按照@RalFriedl.所回答的源oraenv
。上述解决方案有效,但是在我的脚本中,我没有执行bash,因此无法查看bash配置文件
ssh test@server1.xxx.com "source /path/to/oraenv; cd Scripts/Shell; ./Process_Backup.sh"