0

环境和任务:我在机器 1(2003)的用户 1 和机器 2(HP-UX)机器的用户 2 之间配置了 ssh 密码较少的身份验证(通过交换公钥),之后我在 perl 脚本中使用该 ssh 连接来执行machine2 上的 ssh 命令。

问题:当我从 machine1 手动执行脚本时,它不会询问 machine2 的 user2 的任何密码,如果我通过 windows2003 的任务 shedular 执行相同的操作,它会询问 machine2 的 user2 的密码。任何人都可以帮助我了解原因..

在此先感谢,基肖尔。

4

1 回答 1

0

这是一场噩梦。

我终于想通了,你需要设置 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" .

我希望有一天这能帮助一些可怜的灵魂。

于 2011-12-02T14:19:45.277 回答