本地shell脚本中ssh到远程服务器并执行命令

作者&投稿:戈哀 (若有异议请与网页底部的电邮联系)
~         在实际运用中在当前服务器执行命令后,需要在另一台服务器继续执行某些命令,分开去到另一台服务器执行也是比较麻烦的,因此整理下集中执行的方式

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脚本
我们真诚地建议您在程序中使用注释。如果您使用了注释,那么即使相当长的时间内没有使用该脚本,您也能在很短的时间内明白该脚本的作用及工作原理。 变量 在其他编程语言中您必须使用变量。在shell编程中,所有的变量都由字符串组成,并且您不需要对变量进行声明。要赋值给一个变量,您可以这样写: 变量名=值 取出...

请教会linux shell脚本的=~是什么意思?
是正则表达式的字符判断 if [[ $i =~ ^[0-9]+$ ]] && echo 1 1、^是匹配字符串开始的意思,[0-9]只要不是数字都不要。2、~ +的意思的^[0-9]的范围里匹配一次以上+ $是匹配结束符。touch -t "201109021200.00" tempfile 使用引号内的时间戳在当前目录建立一个叫tempfile的文件 find...

如何在shell脚本里调用另一个shell脚本
可以将通用脚本获取的结果直接输出,比如你的通用脚本在\/path\/to\/getDate.sh 内容比如如下:echo "2013-02-26"然后在另外一个脚本里可以这样获得它的输出 Date=`sh \/path\/to\/getDate.sh`注意这里不是引号,而是反引号就是Esc下面1左边的键 现在Date变量的值就是"2013-02-26"...

LINUX快速入门第八章:Shell基础
与一般命令相比,Shell 除了是一个命令行解释器,同时还是一门功能强大的编程语言,易编写,易调试,灵活性较强。作为一种命令级语言,Shell 是解释性的,组合功能很强,与操作系统有密切的关系,可以在 Shell 脚本中直接使用系统命令。大多数 Linux 系统的启动相关文件(一般在 \/etc\/rc.d 目录下)都...

shell脚本中将svn的代码checkout到生产服务器的 "指定目录" 中的命 ...
[root@localhost ~]# vim dd5 !\/bin\/bash svn_dir=$1 mkdir -p $svn_dir cd $svn_dir svn checkout svn:\/\/192.168.1.1\/pro\/domain

shell脚本定位某个文件中特定位置的字符串并进行替换应该怎么写?_百度...
根据位置替换即可:read ipsed -ri "\/subnet\/s\/(subnet )[^ ]+( netmask.*)\/\\1$ip\\2\/" \/mnt\/file\/subnet\/ - 先正则匹配到含有subnet的行,然后替换。替换的时候将不变的部分用小括号括起来,后面依次用\\1 , \\2 原封不动地引用回来。-r 选项用于支持扩展正则,这样就不需要额外的转义符...

shell编程中,如何将编写的脚本把其脚本名当做shell命令来使用_百度知 ...
首先确保你的shell脚本正确,且有执行权限。然后sudo cp 目录\/你的脚本文件名 \/bin\/你的脚本文件名 然后就可以了。直接用 你的脚本文件名当作shell命令了。看我的例子 sudo cp \/home\/blue\/mvmv.sh \/bin\/mvmv.shmvmv然后我的桌面上的stop文件就变成了STOP了。(因为我的shell脚本如下)!\/bin\/bash...

分享70个经典的 Shell 脚本面试题与答案
14) 如何检查文件系统中是否存在某个文件 ?15) 写出 shell 脚本中所有循环语法 ?for 循环 :while 循环 :until 循环 :16) 每个脚本开始的 #!\/bin\/sh 或 #!\/bin\/bash 表示什么意思 ?这一行说明要使用的 shell。#!\/bin\/bash 表示脚本使用 \/bin\/bash。对于 python 脚本,就是 17) 如何获取...

shell脚本是什么
释你的输入,并且处理各种各样的操作系统的输出结果。 shell提供了你与操作系统之间通讯的方式。这种通讯可以以交互方式(从键盘输 入,并且可以立即得到响应),或者以shell script(非交互)方式执行。shell script是放在文件中的一串shell和操作系统命令,它们可以被 重复使用。本质上,shell script是命令行...

如何在linux下shell编写脚本中模拟键盘输入
用 yes 命令 如 yes 123 可以不停的输出 123,你可以用 yes 123 | head -3 输出三次。然后你要是要对某个程序做输入,你用输入重定向。如果你说的是应答,那就用 expect,具体的用法就复杂了,自己搜教程系统地学习吧。

金平苗族瑶族傣族自治县18344196530: shell脚本中怎么ssh上远程机执行命令 -
闽岭鹿胎: 先在两台机子上建立信任,ssh-key 具体方法百度下就有 脚本里的命令是 ssh 用户@ip

金平苗族瑶族傣族自治县18344196530: 在LINUX系统下,如何使用SHell脚本,SSH登陆上路由器 -
闽岭鹿胎: 1.登陆linux系统,打开终端命令.输入 rpm -qa |grep ssh 查找当前系统是否已经安装2.如果没有安装SSH软件包,可以通过yum 或rpm安装包进行安装3、安装好了之后,就开启ssh服务.Ssh服务一般叫做 SSHD4、命令行输入 service sshd start ...

金平苗族瑶族傣族自治县18344196530: 如何用shell脚本实现SSH的远程登录 -
闽岭鹿胎: 要带跳过输入密码的环节么?如果你想每次链接的时候自己手动输入密码,那就参考这样写#!/bin/bash ip=$1 ssh 用户名@ip地址 -p端口号 保存后给执行权限,运行时在脚本后面直接跟一个IP地址 如果你想每次链接的时候自动跳过输入密码的环境,那就再百度下“ssh建立信任关系”,脚本依然还是这个脚本,只是登陆的时候做了互相信任的话,就不需要密码了

金平苗族瑶族傣族自治县18344196530: shell脚本通过ssh登录到服务器进行操作 -
闽岭鹿胎: #命令用;号或&&分割没错,但需要加上"号即可.#来自:DZ动力(verydz.com) ssh 59.43.50.82 "gunzip /export/home/kaohe/tmp/$name/*.gz; /iteview/youwenjie/work.sh"

金平苗族瑶族傣族自治县18344196530: linux下如何使用shell脚本进行ssh远程登陆到其他机器执行停止进程的命令. 用户名/密码:test/12345h -
闽岭鹿胎: ssh test@10.1.1.8 输入密码,登陆成功后 ps -ef 查看进程pid 或者 netstat -ntpl kill -9 进程pid

金平苗族瑶族傣族自治县18344196530: 我想写一个shell脚本,然后在脚本里实现操作远程电脑: -
闽岭鹿胎: ssh root@ip "...所有安装命令写在此处" 或者 写一个mysql安装脚本,假设mysql.sh ssh root@ip

金平苗族瑶族傣族自治县18344196530: 利用shell脚本执行ssh远程另一台主机执行命令并返回命令的结果集 -
闽岭鹿胎: 假设从主机A,检查主机B上的进程,需要在主机B上建立检查用户,例如叫x,并设置通过public key认证登录SSH,不会可以google搜一下,然后,在A机器上执行:ssh x@B ~/command.sh > result.txt command.sh就是B机器上放置在x目录下的脚本.输出结果应该是写到了result.txt 或者另一种写法 result=`ssh x@B ~/command.sh` 结果直接保存到result变量中了.暂时没有linux环境,所以没有实际测试,你自己试试吧

金平苗族瑶族傣族自治县18344196530: 怎么在一个shell脚本中执行远程主机的另一个shell脚本?? ssh已经可以无密码登录了. -
闽岭鹿胎: 假设你要操作的是远程服务器 IP为:1.1.1.1 操作的脚本是 :/home/a.sh 操作命令为 ssh 1.1.1.1 “/bin/bash /home/a.sh”

金平苗族瑶族傣族自治县18344196530: linux下如何使用ssh远程登录主机 执行shell脚本? -
闽岭鹿胎: linux主机登录另外一台linux服务器,直接在命令行提示符下输入: ssh 账号@IP地址即可比如: ssh oracle@192.168.10.13 然后按照提示输入密码. 一切无误则进入该远程主机.

金平苗族瑶族傣族自治县18344196530: 怎么开启linux下的SSH远程连接? -
闽岭鹿胎: ssh是可以代替telnet的一种远程管理的方式.并且具有安全\快捷等优点的一种服务. 方法一:进入Xwindows, 在shell窗口执行setup命令,选择system service启动sshd服务. 方法二:在/etc/ssh/sshd_config 文件中,将permitRootLogin no|yes设置为允许root用户远程登录 /etc/init.d/sshd start 启动ssh服务 /etc/init.d/sshd stop关闭服务

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网