shell远程执行脚本
1. 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]
2. 怎样写一个本地shell脚本来远程主机上的shell脚本
安装CentOS下安装命令很简单,如下sudoyuminstallexpect至于Mac用户,可以通过homebrew安装(需要先安装homebrew,请自行Google)brewinstallexpect测试脚本我们写一个简单的脚本实现scp拷贝文件,在脚本里配置密码,保存为scp.exp如下#!/usr/bin/expectsettimeout20if{[llength$argv]<2}{puts"Usage:"puts"$argv0local_fileremote_path"exit1}setlocal_file[lindex$argv0]setremote_path[lindex$argv1]setpasswdyour_passwdsetpasswderror0spawnscp$local_file$remote_pathexpect{"*assword:*"{if{$passwderror==1}{puts"passwdiserror"exit2}"$passwd\r"exp_continue}"*es/no)?*"{send"yes\r"exp_continue}timeout{puts"connectistimeout"exit3}}注意,第一行很重要,通常我们的脚本里第一行是#!/bin/bash,而这里是你机器上expect程序的路径,说明这段脚本是由expect来解释执行的,而不是由bash解释执行,所以代码的语法和shell脚本也是不一样的,其中setpasswdyour_passwd设置成你自己的密码,然后执行如下命令./scp.exp./local_fileuser@host:/xx/yy/执行前确保scp.exp有执行权限,第一个参数为你本地文件,第二个为远程主机的目录,运行脚本如果报错“connectistimeout”,可以把超时设长一点,第二行settimeout20可以设置超时时间,单位是秒。脚本执行效果如下还能做什么细心的同学一定发现了,其实expect提供的是和终端的一种交互机制,输入密码只是其中一种应用形式,只要是在终端阻塞需要输入时,都可以通过expect脚本完成自动输入,比如前面脚本里配置了两种交互场景,一种是终端提示"password:"时输入密码,还有一种是提示"yes/no)?"时输入“yes”,如果和远程主机是第一次建立连接,执行scp.exp脚本效果是这样的所以我们可以根据终端的提示来配置输入命令,这样就能达到了自动化的效果。至于处理其它交互场景,只需要照着上面的脚本依葫芦画瓢就行了
3. 怎么在一个shell脚本中执行远程主机的另一个shell脚本 ssh已经可以无密码登录了。
假设你要操作的是远程服务器
IP为:1.1.1.1
操作的脚本是 :/home/a.sh
操作命令为
ssh 1.1.1.1 “/bin/bash /home/a.sh”
4. linux下如何使用ssh远程登录主机 执行shell脚本
知道linux的ip,用户和密码就可以远程登陆了。在你的SSH 客户端会有一个linux的终端。在这执行命令就可以了。
5. linux shell 远程连接脚本怎么写 Linux
楼上乱讲,你在脚本里 ssh username@远程主机ip 这样写的话会提示你输入密码,脚本不能实现自动化还有什么意义。
直接在shell脚本里是实现不了自动登录的,你需要借助expect脚本。
redhat下默认是没有安装expect,你可以用yum install expect来安装。
安装完成后编写脚本如下
#!/usr/bin/expect -f
set timeout 30
spawn ssh username@host
expect "*assword:*"
send "password\r"
expect eof
保存后给它加上可执行权限,就可以用这个脚本登录了。
解释一下
set timeout 30 设置超时时间
spawn spawn用来启动一个新的进程
expect 用来等待你所期望的系统返回的字符串
send 用来向系统发送一个字符串,即你的密码
expect eof 等待接受文件结束符。
够详细了吧。累死我了。
6. shell脚本中怎么ssh上远程机执行命令
你好,
先在两台机子上建立信任,ssh-key
具体方法网络下就有
脚本里的命令是
ssh 用户@ip
7. 如何使用python执行远程shell脚本
最近有个需求就是页面上执行shell命令,第一想到的就是os.system,
代码如下:
os.system('cat /proc/cpuinfo')
但是发现页面上打印的命令执行结果 0或者1,当然不满足需求了。
尝试第二种方案 os.popen()
代码如下:
output = os.popen('cat /proc/cpuinfo')
print output.read()
通过 os.popen() 返回的是 file read 的对象,对其进行读取 read() 的操作可以看到执行的输出。但是无法读取程序执行的返回值)
尝试第三种方案 commands.getstatusoutput() 一个方法就可以获得到返回值和输出,非常好用。
代码如下:
(status, output) = commands.getstatusoutput('cat /proc/cpuinfo')
print status, output
Python Document 中给的一个例子,
代码如下:
>>> import commands
>>> commands.getstatusoutput('ls /bin/ls')
(0, '/bin/ls')
>>> commands.getstatusoutput('cat /bin/junk')
(256, 'cat: /bin/junk: No such file or directory')
>>> commands.getstatusoutput('/bin/junk')
(256, 'sh: /bin/junk: not found')
>>> commands.getoutput('ls /bin/ls')
'/bin/ls'
>>> commands.getstatus('/bin/ls')
'-rwxr-xr-x 1 root 13352 Oct 14 1994 /bin/ls'
8. linux 如何自动远程执行脚本
1、安装sshpass
2、sshpass -p “passwd” ssh -p22 root@$dst_ip “a.sh”
注意a.sh是目标主机里的脚本。
9. 利用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环境,所以没有实际测试,你自己试试吧
免费提供最新Linux技术教程书籍,入门自学书籍《linux就该这么学》,为开源技术爱好者努力做得更多更好
10. powershell 远程执行bat脚本,去启动一个应用,如何让应用一直运行,powershell能正常退出
start “.\4511_start.bat"
这样执行就会以新窗口运行bat脚本,而不再占用powershell