前言,第一次碰见这种问题,也查阅了好多前辈的文章,都没有得到解决,自己突然想到一个方法,得到了解决,特此记录一下。
一,为了方便运维,多台服务器都在运行相同程序,每次巡检还要一台一台登录比较麻烦就写了个脚本,每次看多台服务器进程内存之类的只需输入密码即可,(也可设置免密,后续再慢慢搞)。
#!/bin/sh
for a in {01..10};do echo -e "\033[34m #####xxx$a########\033[0m";
ssh -t xxx@xxx$a "echo 磁盘#################################################磁盘;df -h;
echo 内存#########################################内存###############################33内存;free -h;
echo 网络ip##########################################################################网络i;ip a;
echo 负载####################################################################################负载负载;uptime;
echo 进程######################################################################33333#####进程;ps -ef|grep xxx|grep -v grep";
done
二,可是在执行的时候却发现ip a这条命令会报错,出现bash: ip: command not found
三,随后网上查找解决办法,其中我觉得最科学的应该是这两位的解决办法,我是没解决,大家可以参考下
关于ssh远程执行命令出现xxx: command not found问题_ssh远程执行脚本找不到命令_咸鱼c君的博客-CSDN博客
ssh远程登陆执行命令:未找到命令_ssh未找到命令_maker&sky的博客-CSDN博客
四,但是修改当前用户环境变量.bashrc已经试过了还是不行,随后想到了,主要还是这条命令的路径未识别,随后查看which ip 得到ip命令目录,
接着在ssh远程执行命令的时候写全路径是不是可以,随后经过测试确实可以,如下是对比图
①只写命令
②写明全路径命令
五,修改执行脚本里的命令后问题得以解决。第一次分享,希望各位大佬多多提提建议。