Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 某些命令未通过ssh(shell)在远程服务器上写入_Linux_Bash_Shell_Ssh - Fatal编程技术网

Linux 某些命令未通过ssh(shell)在远程服务器上写入

Linux 某些命令未通过ssh(shell)在远程服务器上写入,linux,bash,shell,ssh,Linux,Bash,Shell,Ssh,我必须在远程服务器上运行一些用户定义的命令。所以我做了以下几点。它适用于许多命令,如crontab-l,ls,date+%s,等等。。。但是,它不适用于ip地址 当我在那些服务器中使用ssh时,ipaddr工作正常。但是当我使用ssh执行它时,它不会 这就是我执行它的方式 $sshpass-p myPassword ssh-qroot@127.0.0.1“ip地址”>$PWD/tmp $cat$PWD/tmp 同样,除了ipaddr之外,这适用于我迄今为止尝试过的任何命令。 对于ip addr

我必须在远程服务器上运行一些用户定义的命令。所以我做了以下几点。它适用于许多命令,如
crontab-l
ls
date+%s
,等等。。。但是,它不适用于
ip地址

当我在那些服务器中使用ssh时,
ipaddr
工作正常。但是当我使用ssh执行它时,它不会

这就是我执行它的方式

$sshpass-p myPassword ssh-qroot@127.0.0.1“ip地址”>$PWD/tmp
$cat$PWD/tmp
同样,除了
ipaddr
之外,这适用于我迄今为止尝试过的任何命令。 对于
ip addr
,它给出以下输出

bash: ip: command not found
所以我想知道为什么,如果我做错了什么

另外,请不要建议使用
rsync
或任何其他非默认的linux命令,因为我工作的环境没有它们,我也没有安装它们的权限


提前感谢

这是因为非交互式ssh会话没有为您的登录配置文件提供源,其中包括设置您的
路径
变量


默认路径不包含
/sbin
,这是
ip
命令的常用位置。

我明白了。。。你是说当我通过ssh运行命令时,它的访问权限是“有限的”?还有,有没有办法解决这个问题?或者这真的取决于我想通过ssh运行的命令。这不是因为它的访问权限有限,而是因为您以非交互方式运行,您可能需要自己做一些工作。在ip命令出现问题的情况下,您可以调用命令调用
PATH=/sbin:/usr/sbin:$PATH ip addr
,这将解决这种情况下的问题。通过ssh执行多个命令可以通过使用scp远程复制它,然后通过ssh调用它来更好地完成。这样,您可以添加一行设置脚本的路径,从而只执行一次。好的,我明白了。因为我不知道用户想要执行什么,所以我可以在每个命令之前放置
PATH=/sbin:/usr/sbin:$PATH
?假设用户命令存储在
$myCommand
中。我只需执行
sshpass-pmypass-sshroot@127.0.0.1‘PATH=/sbin:/usr/sbin:$PATH$myCommand’
以及为所有命令放置
PATH=/sbin:/usr/sbin:$PATH
不会影响任何其他内容?除非您在
/sbin
/usr/sbin
中有额外的命令变体,最坏的影响是命令的额外搜索时间。