ssh远程登陆执行命令:未找到命令

ssh远程登陆执行命令:未找到命令,第1张

ssh远程登陆执行命令:未找到命令

今天搭建hadoop集群,安装完jdk之后发现手动一个个执行scp命令太慢了!!
于是打算写一个脚本可以直接把安装配置直接复制过去:
代码如下:

#!/bin/bash


for i in {2..4}
do
        scp -r  root@hadoop1$i:
        echo "hadoop1$i";
done


然后执行命令:
scp 要复制的文件目录 目标文件目录

[root@hadoop12 script]# ./scp.sh /etc/profile /etc/profile

然后进行测试,执行命令

[root@hadoop12 script]# ssh hadoop11 "java;exit"
bash: java: 未找到命令
[root@hadoop12 script]#

???难道执行失败了? 我直接来到hadoop11

啊这,我找了一下文章,终于发现了原因

总结来说,就是当通过ssh命令直接执行的时候,他并没有读取/etc/profile文件。而是/home下的.bashrc文件,但是我的home下什么文件都没有,

没有那就新建嘛,
新建一个.bashrc文件,写入我的配置

然后开心的执行source命令,再去尝试远程命令:

???难到哪里又错了,在这里我突然想到,如果我修改文件的时候需要刷新一下这个文件,那么有没有可能当他读取之后这个文件并没有进行刷新呢?毕竟export导入的是临时的,重新执行命令:

可以看到命令正常执行
下面提供一个远程执行命令:

#!/bin/bash

for i in {1..4}
do
        echo "login hadoop1$i";
        echo "执行命令: ssh hadoop1$i '$*;exit'"
        ssh -t  hadoop1$i "source /home/.bashrc;$*;exit";
done

就可以看到全部执行成功

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5683248.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存