我在我的本地使用paramiko来ssh进入unix服务器。我想从服务器上的本地启动一个可执行文件。可执行文件当前从local / paramiko失败,因为当我使用paramiko ssh时没有正确设置LD_LIBRARY_PATH环境变量,但是当我使用putty并以交互方式工作时它会自动设置。当我通过putty登录到机器时,可执行文件按预期工作,但是当我通过paramiko从我的本地登录时,exectuable返回一个错误,导致LD_LIBRARY_PATH环境未正确设置。
当我使用putty登录计算机时,admin .login文件为变量LD_LIBRARY_PATH指定了一系列路径。它看起来像这样:
setenv LD_LIBRARY_PATH path1:path2:path3:...
但是,通过paramiko登录时,不启动此管理脚本,我需要手动设置LD_LIBRARY_PATH变量。
我的连接如下:
ssh = pk.SSHClient()
ssh.set_missing_host_key_policy(pk.AutoAddPolicy())
ssh.connect(hostname='server', username='user', password='password')
我想要运行的命令如下:
stdin, stdout, stderr = ssh.exec_command('nohup executablefile')
如何设置我的LD_LIBRARY_PATH,然后使用paramiko的exec_command执行我的程序,还是应该寻找不同的函数?
答案 0 :(得分:0)
我修补并找到了一个简单的解决方案。
可以通过ssh.connect()明确告诉远程计算机环境路径。诀窍是使用(type='hidden')
将一系列命令绑定在一起。
foreach($result as $r){
<div class='comments'>
echo"<p>$r['com_text']</p>";
<button> reply <button>
etc
</div>
<div class="reply_container>
<form>
<textarea></textarea>
<input type="hidden value="value_from_database" name="">
<input type="hidden value="" name="">
<button type="submit></button>
</form>
</div>
}
答案 1 :(得分:0)
可能在命令生效之前设置了变量。这仅用于说明。这将需要翻译为paramiko的等效项。
class Join_Operator
{
class Departamento
{
public int idDepto { get; set; }
public string nombreDepto { get; set; }
}
class Empleado
{
public int idDepto { get; set; }
public string nombreEmpleado { get; set; }
}
public void JoinTables()
{
List<Departamento> departamentos = new List<Departamento>();
departamentos.Add(new Departamento { idDepto = 1, nombreDepto = "Arquitectura" });
departamentos.Add(new Departamento { idDepto = 2, nombreDepto = "Programación" });
List<Empleado> empleados = new List<Empleado>();
empleados.Add(new Empleado { idDepto = 1, nombreEmpleado = "John Doe." });
empleados.Add(new Empleado { idDepto = 2, nombreEmpleado = "Jim Bell" });
var joinList = (from e in empleados
join d in departamentos on
e.idDepto equals d.idDepto
select new
{
nombreEmpleado = e.nombreEmpleado,
nombreDepto = d.nombreDepto
});
foreach (var dato in joinList)
{
Console.WriteLine("{0} es empleado del departamento de {1}", dato.nombreEmpleado, dato.nombreDepto);
}
}
}
应返回类似以下内容的内容。这是远程主机中环境的内容。
ssh remote-host 'COOKS=32 env'