我使用机器A,我想运行机器B中存在的脚本。
我做了普通的命令:
using(SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["sqlDevConnection"].ConnectionString))
using(SqlCommand command = new SqlCommand(Q, con))
{
con.Open();
// add parameters correctly based on above example
command.Parameters.AddWithValue("@val1", recordID);
command.ExecuteNonQuery();
}
问题是我在脚本中使用了一些无法用机器A解释的命令。所以我找不到命令:(例如)
ssh user@machine_B_adress '. script.sh'
我试图打开一个shh: ssh user @ machine_B_adress
然后运行脚本,它可以工作!!!
答案 0 :(得分:1)
假设user @ machine_B的shell是bash,第一个例子是'ssh user@machine_B_adress '. script.sh'
,bash为交互式/非交互式会话设置了不同的shell env。
请参阅man bash
有关交互式shell
看起来您可以通过添加bash -l -c
$ ssh user@machine_B_address "bash -l -c '. script.sh'
我的快速测试,我将调试回音添加到远程用户的 .bash_profile
$ ssh foouser@jdsrpi1 "bash --login -c '. foo.sh'"
这是 .bash_profile
文件foouser
SHELL = /bin/bash
PATH = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games
ksh
$ ssh kshuser@jdsdrop1.jimsander.io "date"
Tue Apr 18 11:52:43 EDT 2017
$ ssh kshuser@jdsdrop1 "ksh -l -c date"
这是SHELL(/ usr / bin / ksh)文件 .profile
Tue Apr 18 11:53:24 EDT 2017