我有shell脚本调用test.sh,它包含
echo 'welcome'
echo $inf_user
当我在unix框输出上运行此脚本时
欢迎
名为myUsername
但是当我使用plink运行这个脚本时,我的输出是
欢迎
正如您所见,它只显示欢迎,并且不再显示myusername
请帮忙
我的plink命令是 -
plink.exe -ssh user@hostname -l user -pw password -m c:/myfile/file.txt hostname
和 file.txt包含
#!/bin/sh
/folder1/folder2/test.sh
答案 0 :(得分:1)
问题在于,当您实际登录服务器时,还会加载环境变量,例如$inf_user
。但是当plink.exe
连接时,我猜测它并没有启动真正的SSH会话来加载用户配置文件&相关的环境变量。
如何解决这个问题取决于设置&安装要求。不熟悉如何设置$inf_user
,但也许你可以这样做;我使用我当地的Mac OS X设置作为示例。首先登录远程Unix / Linux服务器并输入以下内容:
echo $PATH;
输出应该是这样的:
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
现在,在远程主机上的脚本中,根据该输出将此行添加到文件顶部:
PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
这会强制脚本将PATH
用作$PATH
。
此外,由于$inf_user
不是标准的Unix / Linux变量,因此可以在远程系统的.bashrc
或.profile
中进行设置。因此,您可能需要在此处查看是否存在可以复制的变量。
过去所有这些,我对plink.exe
的工作方式并不是100%肯定,但file.txt
可能更适合bash
这样设置:
#!/bin/bash
/folder1/folder2/test.sh
我有一种有趣的感觉,当你登录时,你正在使用bash
shell,但是这个脚本正在使用基本的sh
shell,而这也可能导致这个问题。
答案 1 :(得分:1)
在大多数UNIX系统上,变量$USER
可用于访问当前登录用户的用户名。变量$inf_user
特定于您碰巧拥有的任何设置。
另外,在一个不相关的说明中,我看到您在命令中指定了密码。您通常不应该这样做,因为命令在命令历史记录中未加密记录,并且可以在机器上运行ps
的任何人都可以看到。我建议您运行一个不包含密码的命令,但允许通过标准输入输入密码。