环境与任务:我已经在machine1(2003)的user1和machine2的user2 (HP-UX)机器之间配置了ssh无密码身份验证(通过交换公钥),因为我在perl脚本中使用ssh连接在machine2上执行ssh命令。
问题:当我从machine1手动执行脚本时,它不会询问machine2的user2的任何密码,如果我通过windows2003的任务调度执行同样的操作,它会询问machine2的user2的密码。有人能帮我弄清楚原因吗?
提前谢谢你,基肖尔。
发布于 2011-12-02 22:19:45
这是一场噩梦。
我最终发现您需要设置HOMEDRIVE和HOMEPATH环境变量。在运行交互式和任务调度程序时,使用命令'set‘打印出环境变量,并比较输出,这是任务调度程序中仅有的两个没有出现的环境变量,谢天谢地它们起作用了。在设置这些之后,任务调度器最终可以看到已知的主机,
如果你想使用scp将文件复制到windows机器上,你可能会在通过任务调度程序运行时遇到另一个令人愉快的问题:由于某种原因,scp不能复制到任何旧文件夹,它必须是登录用户的主文件夹。好吧,也许它没有那么严格,但老实说,当我完成了6个小时的胡言乱语时,我不想费心去找出答案。无论如何,解决方法是首先将文件scp到登录用户的主文件夹,然后将它们移动到最终目标位置。
下面是我的批处理文件的结果(从最终目标目录内部运行):
set HOMEDRIVE=C:
set HOMEPATH=\Documents and Settings\loggedinuser
echo Compressing data files on server...
ssh user@host "cd /foo/bar ; gzip -fc foobar > foobar.gz"
echo Copying files from server...
scp user@host:/foo/bar/foobar.gz "%HOMEPATH%"
move "%HOMEPATH%\foobar.gz" .我希望有一天这能帮助一些可怜的人。
https://stackoverflow.com/questions/7158911
复制相似问题