当前位置:首页 » 编程软件 » 脚本里执行ssh

脚本里执行ssh

发布时间: 2022-05-01 06:26:52

Ⅰ 如何在C语言程序中使用SSH

1、这种功能用脚本实现最好
2、最好弄成dsa公钥验证方式,也就是ssh无密码登录
3、ssh的密码输入是绑定到TTY而不是stdin的,所以无法重定向(到管道)
3.1、如果想通过程序输入ssh密码,那么就要模拟TTY,或者让ssh认为你的输入是直接来自TTY
3.2、或者,你干脆自己实现个最简单的ssh协议吧
3.3、程序模拟TTY,一般会直接采用expact库,这在脚本里面很方便,但由于C处理字符串过于笨拙……
4、登录之后,和ssh交互需要通过管道进行。用写来模拟控制台键入字符,用读来取命令输出数据;至于命令返回值……读 echo $? 的输出吧
5、如果命令本身也有输入/输出提示,比如 rm xxx 会让你按y什么的,那么你必须自己捕捉到这个提示,然后往管道写一个"Y\n"进去。所以……也许还是expect方便。
6、你可以搞一个脚本,在脚本里用expect完成登录动作,然后下interact命令进入交互模式;然后在C里面用popen()执行这个脚本,这样就可以避开登录问题,但仍然要处理命令行交互问题(也就是回答are you sure之类的问题,当然这可以通过为命令传入-y之类参数来绕开,不过有些命令未必支持)。

Ⅱ shell脚本通过ssh登录到服务器进行操作

呵呵,这个问题有意思。 仔细想想,是本地环境和服务器环境的区别。你的脚本是存放在本地的,当你执行第一句的时候,已经转化为服务器的一个中断,享用的是服务器的环境。是看不到你本地的脚本的。

Ⅲ 如何用shell脚本实现SSH的远程登录

要带跳过输入密码的环节么?
如果你想每次链接的时候自己手动输入密码,那就参考这样写
#!/bin/bash
ip=$1
ssh 用户名@ip地址 -p端口号

保存后给执行权限,运行时在脚本后面直接跟一个IP地址

如果你想每次链接的时候自动跳过输入密码的环境,那就再网络下“ssh建立信任关系”,脚本依然还是这个脚本,只是登陆的时候做了互相信任的话,就不需要密码了

Ⅳ 在脚本中使用ssh时的几个注意事项

1. 超时设置
-o ConnectTimeout=3
2. 重定项标准输入到/dev/null
-n
当使用这样的形式时 (使用 key 认证):
while read line ; do ip=$(awk '{print $1}' < << $line ) ssh -n -o ConnectTimeout=3 $i uptime done < file
假如此时不使用 -n ,则只有第一行会被处理。
3. 批处理模式,在脚本中使用再合适不过(使用 key 认证)
-o BatchMode=yes
当 key 认证不成功时,有可能会弹出“密码认识”,从而影响脚本运行下去,此时可以打开 BatchMode模式。
4. 遇到未知主机:
-o StrictHostKeyChecking=no
当遇到未知的主机公钥时,自动接受key。
5. 糟遇远程主机连接后无响应:
当设置了 BatchMode 时 ServerAliveInterval 默认被设置成 300 秒(服务端无数据传回的持续时间)。
ServerAliveCountMax相当于是重试的次数,比如下面的例子,15秒 x 3 = 45 秒,即当 45 秒后,真正超时断开。
TCPKeepAlive打开时,便于发现网络的断开。当网络故障(比如路由器坏掉)或者远端开机、死机时,连接会主动断开,否则的话,将会等待相当一段时间后才会断开。
-o ServerAliveInterval=15
-o ServerAliveCountMax=3
-o TCPKeepAlive=yes
需要注意的是,这里的超时、无响应,仅是 ssh或者sshd无影响,假如是在远程上执行程序,程序无响应,则不能处理此时的超时,解决方法见《在Shell中实现异步》。

Ⅳ 在linux 脚本中使用了远程登录ssh,结果是 ssh:command not found

首先要查看一下ssh命令存在何处,一般是用which这个命令查看
#
which
ssh
/usr/bin/ssh
可能是楼主脚本中对环境变量有限制(楼主使用了crontab执行脚本?),所以应该在脚本开始的时候加上一句
PATH=$PATH:/usr/bin/ssh
或者直接再脚本中使用ssh的绝对路径。

python脚本ssh命令行可以登录并执行相应命令,但是脚本总是报错,何解

编辑“/usr/local/python269/lib/python2.6/site-packages/pexpect/__init__.py
”,将“ raise EOF(str(err) + '\n' + str(self))”这段代码注释掉,程序正常运行

有些 UNIX 平台,当你读取一个处于 EOF 状态的文件描述符时,会抛出异常,注释掉就可以了

Ⅶ 请教如何在Bash里调用ssh远程执行命令

直接将所有可执行的各种命令写在 bash 的 SHELL 脚本文件中即可。当然了,至于说该 SHELL 脚本文件是否可以执行?并不是说只要你的SHELL脚本文件中的命令都是可执行的,就能够正确执行的。必须要使用命令:chmod +x my_shell.txt 将其修改成可执行权限,且 SHELL 脚本文件中的每一个命令都是拥有 x 权限(可执行权限)的,才能够在命令行状态 $ 下面正常执行。

Ⅷ 利用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就该这么学》,为开源技术爱好者努力做得更多更好

Ⅸ SSH的运行脚本的语句


-V Display the version number and exit.

显示版本号并退出。

退出SSH当然就断开连接啦。


写在shell脚本里,执行的时候是在新建shell中执行的,退出也只是退出新建shell回到原shell,所以不影响连接。

试试执行:

(ssh-V)

放到小括号中,同样会新建shell去执行。




Ⅹ shell脚本中怎么ssh上远程机执行命令

你好,
先在两台机子上建立信任,ssh-key
具体方法网络下就有
脚本里的命令是
ssh 用户@ip

热点内容
数据库数据插入语句 发布:2025-05-15 01:30:01 浏览:870
js是无需编译直接运行吗 发布:2025-05-15 01:28:30 浏览:476
android文件夹重命名 发布:2025-05-15 01:13:50 浏览:481
cns脚本 发布:2025-05-15 01:13:38 浏览:722
数据结构与算法笔试题 发布:2025-05-15 01:04:20 浏览:417
搜狗输入法如何直接编辑配置文件 发布:2025-05-15 00:51:47 浏览:668
电箱都有哪些配置 发布:2025-05-15 00:30:21 浏览:74
安卓qq邀请码在哪里寻找 发布:2025-05-15 00:02:04 浏览:35
三菱fx编程口 发布:2025-05-15 00:01:23 浏览:810
医院招商引资宣传片脚本 发布:2025-05-15 00:01:21 浏览:368