使用场景:在做自动化部署的时候,或者远程管理的时候,经常用到plink或者ssh远程连接工具,但是使用也会遇到一些问题。
问题:在用plink远程连接linux,并执行命令的时候,有些情框与登录linux终端执行结果并不一样,比如我们远程启动tomcat,调用start.sh(bash)文件指令,比如start.sh中有些环境变量PATH并不全。
分析: 通过ssh或者plink连接远程主机,登录后不会开启登录账号的shell环境,什么意思呢,下面通过案例说明一下。
我们用plink远程连接主机: plink -pw ***** root@127.0.0.1 /mnt/tomcat/start.sh
发现执行后能正常启动,但是path变量缺少一些信息,由于plink远程登录并不启动登录shell环境,也就是说连接后,不会加载当前用户bash,我们知道linux每个用户登录后,默认到/home/当前用户,每个用户都有个.bash_profile,登录后会自动执行这个文件,而plink连接后,默认不是登录环境,不会加载,这里面的配置的信息,自然加载不到,导致后面指令运行找不到,达不到预期的效果
修改方法:plink -pw ***** root@127.0.0.1 source /home/root/.bash_profile ; /mnt/tomcat/start.sh
需要在运行之前手动加载一下,或者强制登录后作为登录环境加载bash