shell脚本通过ssh登录到服务器进行操作
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本通过ssh登录到服务器进行操作相关的知识,希望对你有一定的参考价值。
现在环境可以通过shell脚本登录服务器,但是问题出现了,我想上去执行多条命令却不行,只能执行登录上去的第一条命令,如下:
ssh 59.43.50.82 gunzip /export/home/kaohe/tmp/$name/*.gz /iteview/youwenjie/work.sh
中间加;和&&都不行 求解!!!
ssh user@ip < shell.sh 执行本地脚本 参考技术C #命令用;号或&&分割没错,但需要加上"号即可。
#来自:DZ动力(verydz.com)
ssh 59.43.50.82 "gunzip /export/home/kaohe/tmp/$name/*.gz; /iteview/youwenjie/work.sh"
本地shell脚本中ssh到远程服务器并执行命令
参考技术A 在实际运用中在当前服务器执行命令后,需要在另一台服务器继续执行某些命令,分开去到另一台服务器执行也是比较麻烦的,因此整理下集中执行的方式1、首先配置ssh免密操作
Linux 下实现SSH互信: https://www.jianshu.com/p/2456d98aa607
2、简单命令
ssh root@192.168.1.1 "cd /var/lib; ls; cd "
2.1 使用时注意,双引号必须有。若没加双引号,第二条及之后的命令会在本地执行
2.2 分号是将两条语句间隔开
2.3 单双引的区别:单引号不会解析值,是什么就传什么;双引号会解析值,将解析结果传过去
3、多条命令
ssh root@192.168.1.1<< reallssh
cd /var/lib/test
tar -zxvf api.com.tar.gz
......
exit
reallssh
3.1 命令写在 << reallssh(开始) 至 reallssh(结束) 之间
3.2 reallssh可自己定义为其他形式
3.3 在结束前加上exit退出远程
4、可能遇到的问题
问题:远程登录主机时出现Pseudo-terminal will not be allocated because stdin is not a terminal. 错误
解决方案:字面意思是伪终端将无法分配,因为标准输入不是终端。
所以需要增加-t -t参数来强制伪终端分配,即使标准输入不是终端。
to force pseudo-tty allocation even if stdin isn’t a terminal.
参考样例如下:
ssh -t -t user1@192.168.1.1 -p 22
--------------------------------------------------------------------------------
参考:https://blog.csdn.net/jinking01/article/details/84386769
以上是关于shell脚本通过ssh登录到服务器进行操作的主要内容,如果未能解决你的问题,请参考以下文章