crontab 执行scp.exp 失败

最近在做一个检测脚本,并发送日志到相关服务器。脚本测试正常,且日志发送正常,遂加入crontab

但是在crontab中无法,执行。逐一检查crontab运行状态、脚本执行权限、环境变量等等,均正常,脚本还是无法执行。

后来发现一帖子,说scp.exp有问题

如下为:scp.exp

#!/usr/bin/expect -f

set CMD0 [lindex $argv 0]

set CMD1 [lindex $argv 1]

set PASS "[email protected]"

spawn scp -r $CMD0 $CMD1

set timeout 10

expect {

"*(yes/no)*" { send "yes\r" }

"*password*" { send "${PASS}\r" }

}

interact

最后scp.exp停留在交互上,而密码无法输入,一直失败。必须终止交互

遂修改scp.exp成功

修改如下

#!/usr/bin/expect -f

set CMD0 [lindex $argv 0]

set CMD1 [lindex $argv 1]

set PASS "[email protected]"

spawn scp -r $CMD0 $CMD1

expect {

"*(yes/no)*" { send "yes\r" }

"*password*" { send "${PASS}\r" }

}

#interact

set timeout 20

expect eof

exit

时间: 2024-10-28 16:02:10

crontab 执行scp.exp 失败的相关文章

crontab执行失败问题汇总,容器中执行

crontab执行失败 应需求写了个脚本,结果crontab里配置后仍旧不执行.查阅多方资料,整理如下: 解决方案 先看看这个文章,是不是同样的问题? 确保配置好crontab的日志,这样才能看到最多的bug信息 https://my.oschina.net/leejun2005/blog/1788342 你的crontab是在容器中吗 https://baijiahao.baidu.com/s?id=1589308030317725261&wfr=spider&for=pc 容器技术日渐

解决命令行执行shell脚本成功,但crontab执行失败

实际生产案例 生产机房自建PPTP客户端通过拨号连接到生产机房,但是一旦客户端网络是意外断线再重新拨号 会产生IP冲突,于是写了一个脚本监控PPTP的IP是否有多个(一般冲突以后会生成2个IP) #!/bin/bash #author Liuyueming . /etc/profile #开始没有加这个环境变量 for i in {10..35} do n=`ifconfig|grep 10.13.0.${i}|wc -l` #循环取ip并计数 # echo `ifconfig|grep 10.

Crontab执行脚本中的ssh命令访问被拒绝

我们经常会通过crontab来执行定时任务,通常生产环境中在不同主机直接进行登录是通过ssh来连接的.比如我们通过在备份服务器上设定定时任务,定期通过scp(使用SSH的远程拷贝命令)来拷贝远程服务器的数据到备份服务器上,这也是我遇到的一个事情. 环境描述: 脚本与定时任务: 定时任务设置如下: 无论是否执行成功,都把信息输出到2222.txt中 脚本内容如下: 我这里仅用ssh命令来测试,实际上这个命令如果可以正常执行的话,你执行scp命令也一样 #!/bin/bash ssh -v 192.

Linux执行Cron Job失败,在Shell sh下执行却能成功 - 环境变量?

博客分类: Linux linuxcrontabpermissionetc/profile环境变量 一.我们常常碰到在shell下执行某个命令能够成功,比如执行一个java程序: java -jar /home/opscoder/topo-audit.jar,但是在crontab下执行会失败. cornjob为 0 10 * * * java -jar /home/opscoder/topo-audit.jar: 即每天10点去执行这个jar中的main方法 二.查找失败的原因,即查看crota

【转】PHP计划任务:如何使用Linux的Crontab执行PHP脚本

转:https://www.centos.bz/2011/03/auto-run-task-crontab/ 我们的PHP程序有时候需要定时执行,我们可以使用ignore_user_abort函数或是在页面放置js让用户帮我们实现.但这两种方法都不太可靠,不稳定.我们可以借助Linux的Crontab工具来稳定可靠地触发PHP执行任务.下面介绍Crontab的两种方法. 一.在Crontab中使用PHP执行脚本 就像在Crontab中调用普通的shell脚本一样,使用PHP程序来调用PHP脚本.

crontab执行脚本中文乱码,手动执行没有问题

crontab执行脚本中文乱码,手动执行没有问题 产生原因:       这是因为Unix/Linux下使用crontab时的运行环境已经不是用户环境了,因此原本用户下的一些环境变量的设置就失效了.例如原来用户环境变量设置的是GB2312,但是使用crontab运行时的环境变量就可能是ISO8859-1.   解决方法:       首先执行命令echo $LANG,假设输出是en_US.UTF-8       然后在脚本中增加一行export LANG=en_US.UTF-8

[Shell]crontab 执行任务调用shell脚本,相对路径无法找到

问题出现的场景大概就是 1  cron调用一个python脚本 2  python脚本中调用一个shell脚本(对日志分析)获取shell输出然后发送邮件 类似一个监控任务. 直接执行python脚本没有问题,但是写在cron中之后,shell脚本中的相对路径就找不到了,总是提示无法找到某些文件 后来解决的问题就是使用log文件的绝对路径,运行就正常了. google了一些,发现很多人也遇到过类似的问题,可能和cron的机制有关系. 大部分人的问题都是因为环境变量造成的,因为cron是一个独立进

解决使用crontab执行shell脚本时出现乱码情况

自己编写了一个shell脚本来维护测试环境,使用了crontab调度让其定时执行,结果遇到了乱码问题,脚本在shell环境下直接运行没有问 题. 结论是crontab执行时不会携带用户的环境变量,缺失一些系统变量,碰到中文就乱码.需要在脚本里额外添加缺失的环境变量,针对中文问题,需要声明 LANG参数 在脚本开头增加:LANG="en_US.UTF-8"export LANG 设置的编码要和系统设置的一致,具体可以到/etc/sysconfig/i18n 查看对应的环境变量.

python脚本crontab执行的几个坑。

坑一: 一般linux都预安装python,但是版本比较低.会出现python程序手工执行正常,但是用crontab执行报错,如缺少某某模块之类的. 最直接的解决办法:使用新版本python的绝对路径执行,如: 0 14 * * * /usr/local/bin/python2.7 /xxx.py > /yyy.log 2>&1 & 坑二: 如果python程序内使用到一些涉及环境变量的方法可能差异,如: cfg = ConfigParser.ConfigParser()cfg