ssh调用远程脚本
‘壹’ shell脚本中怎么ssh上远程机执行命令
你好,
先在两台机子上建立信任,ssh-key
具体方法网络下就有
脚本里的命令是
ssh 用户@ip
‘贰’ ssh登录到远端服务器执行本地脚本,怎么给脚本传递位置参数
首先要设置ssh信任 ----> 实现无密码ssh登录. 这个你可以自行搜索, 脚本非常简单: ssh user@host "command $var"
‘叁’ linux下如何使用ssh远程登录主机 执行shell脚本
知道linux的ip,用户和密码就可以远程登陆了。在你的SSH
客户端会有一个linux的终端。在这执行命令就可以了。
‘肆’ 如何使用python执行远程shell脚本
pexpect复杂,但通用灵活。另外一种法就是ssh-keygen/ssh--id,实现自动密钥验证取代手动密码验证,然后就可以直接调用远程‘[email protected]’,麻烦之处在于要手动创建与维护两台机器间的公钥。至于捕获输出,还是要变通一点,既然B都登陆到A了,那么通过临时文件向A输出内容不是更简单吗,这是shell编程中简单有效的法。还可以使用sftp
‘伍’ ssh如何远程执行命令
ssh支持远程命令参数 可以类似方式嵌套: alias pushbaby='cd /Users/xuqiang/Develop/work/tickets/baby/deploy;scp -r -v -i ~/.ssh/pedal/id_rsa baby.tar.gz baby.sql.txt [email protected]:/home/qiang.xu/tmp;ssh [email protected] -i ~/.ssh/pedal/id_rsa "source ~/.bash_profile;pushbaby";ssh [email protected] -i ~/.ssh/pedal/id_rsa "ssh [email protected] \"source ~/.bash_profile;pushbaby\""'更新要注意的是alias在非交互模式无法使用,需将替换成function
‘陆’ 教你如何通过ssh控制远程主机,远程执行命令
教你如何通过ssh控制远程主机,远程执行命令ssh控制远程主机远程执行命令这个分两步,很简单很实用。第一步,设置ssh免认证,免认证就是只不用密码认证就可以直接登录,这在写脚本服务器控制时特别有用。每二步,就是到远端服务器上去执行命令
假如现在有两个服务器,一个叫SA,另一个叫SB。现在我要在SA上去控制SB。
格式:ssh
SB_用户名@SB_IP
命令for
example:ssh
[email protected]
echo
aaa>>hzs_test.txtssh
[email protected]
'echo
-e
haha/n
hoho
>>hzs_test.txt'
‘柒’ ssh怎么连接远程服务器
Mac端
打开Mac的终端 输入ssh 用户名@IP地址 -p 端口号,或者在程序坞中右键终端图标,选择新建远程连接,选择“安全Shell(ssh)”然后点击右边服务器下面的加号,在输入框中如远程连接的服务器的名称或IP地址,然后点击 好。在“安全Shell(ssh)”的服务器就可以看见你刚才添加的服务器,选中刚添加的服务器 用户输入框中输入远程服务器的用户名,点击连接。终端会新跳出一个窗口,输入远程服务器的用户密码即可完成连接。
Win端
打开cmd 输入ssh 用户名@IP地址 -p 端口号,或者使用putty,xshell第三方工具
安卓端
下载juicessh根据提示完成
‘捌’ 怎么通过ssh在远程Host执行交互命令
ssh执行远程操作
命令格式
复制代码 代码如下:
ssh -p $port $user@$p 'cmd'
$port : ssh连接端口号
$user: ssh连接用户名
$ip:ssh连接的ip地址
cmd:远程服务器需要执行的操作
准备工作
基于公私钥认证或者用户名密码认证能确保登录到远程local2服务器(有点基本运维知识的人做这个事情都不是问题)
cmd如果是脚本,注意绝对路径问题(相对路径在远程执行时就是坑)
不足
这个命令可以满足我们大多数的需求,但是通常运维部署很多东西的时候需要root权限,但是有几处限制:
远程服务器local2禁止root用户登录
在远程服务器脚本里转换身份用expect需要send密码,这样不够安全
ssh的-t参数
复制代码 代码如下:
-t Force pseudo-tty allocation. This can be used to execute arbitrary screen-based programs on a remote machine, which can be very useful, e.g. when implementing menu services. Multiple -t options force tty allocation, even if ssh has no local tty.
中文翻译一下:就是可以提供一个远程服务器的虚拟tty终端,加上这个参数我们就可以在远程服务器的虚拟终端上输入自己的提权密码了,非常安全
命令格式
复制代码 代码如下:
ssh -t -p $port $user@$ip 'cmd'
示例脚本
复制代码 代码如下:
#!/bin/bash
#变量定义
ip_array=("192.168.1.1" "192.168.1.2" "192.168.1.3")
user="test1"
remote_cmd="/home/test/1.sh"
#本地通过ssh执行远程服务器的脚本
for ip in ${ip_array[*]}
do
if [ $ip = "192.168.1.1" ]; then
port="7777"
else
port="22"
fi
ssh -t -p $port $user@$ip "remote_cmd"
done
这个方法还是很方便的,-t虚拟出一个远程服务器的终端,在多台服务器同时部署时确实节约了不少时间啊!
‘玖’ 请教如何在Bash里调用ssh远程执行命令
直接将所有可执行的各种命令写在 bash 的 SHELL 脚本文件中即可。当然了,至于说该 SHELL 脚本文件是否可以执行?并不是说只要你的SHELL脚本文件中的命令都是可执行的,就能够正确执行的。必须要使用命令:chmod +x my_shell.txt 将其修改成可执行权限,且 SHELL 脚本文件中的每一个命令都是拥有 x 权限(可执行权限)的,才能够在命令行状态 $ 下面正常执行。
‘拾’ shell本地脚本调用远程脚本,当远程脚本执行完再继续执行本地脚本
#!/bin/bash
#调用expect脚本执行远程sh
expect-c'
settimeout10000
spawnsshusr@ip
expect{
"yes/no"{send"yes ";exp_continue}
"*assword"{send"passwd "}
}
expect"#"
send"sh1 "
expect"#"
'
echo
ls-l
其中timeout时间需要设置足够长,不然会连接超时断掉。
或者你配置了rsh,可以把上面的expect过程替换成rsh [Host] [-l UserName] [-n] [Command]