从另一台服务器获取输出时遇到问题。可以使用无密码连接。
假设当我执行df -kh
下面的操作时,它正在工作(执行 ssh 并从另一台服务器获取 o/p)
[user1@meylvmacs01 ~]$ssh [email protected] df -kh
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 99G 11G 83G 12% /
tmpfs 32G 76K 32G 1% /dev/shm
/dev/sda1 200M 264K 200M 1% /boot/efi
/dev/sda4 55G 8.3G 44G 16% /opt/SP
/dev/sda5 55G 30G 23G 58% /var/SP
172.22.27.141:/root_vdm_1/GDSP_Commmon_NAS
493G 227G 266G 47% /var/SP/nfs/gdsp
[m2muser@meylvmacs01 ~]$
但是当我执行下面的操作时,我收到以下错误:
ssh [email protected] sqlplus SOAF_PUBLISHER/S_PUBLISHER_SOAF@OSBS1
尽管 sqlplus exe 存在于另一台服务器的以下目录中/opt/SP/apps/instantclient_11_2/bin
[user1@meylvmacs01 tmp]$ssh [email protected] sqlplus SOAF_PUBLISHER/S_PUBLISHER_SOAF@OSBS1
bash: sqlplus: command not found
应该传递什么选项才能成功执行此操作?
答案1
您有一个未集成在系统中的应用程序(安装在与默认目录不同的目录中,从非默认路径加载库),如果配置不当,这会导致一些麻烦。它可能是这样配置的.bashrc
,但是如果您只运行命令而不是交互式 shell,则这通常会被跳过。有两种选择:
使用标准输入将命令发送到服务器:
echo "sqlplus SOAF_PUBLISHER/S_PUBLISHER_SOAF@OSBS1" | ssh -tt [email protected]
修复(或其他启动文件)中的
PATH
和LD_LIBRARY_PATH
环境变量启动,~/.bashrc
以便非交互式命令不会跳过它们。它通常包含类似的内容# If not running interactively, don't do anything case $- in *i*) ;; *) return;; esac # your commands ...
只需添加修改
PATH
并LD_LIBRARY_PATH
在其上方重试即可。