我有一个第三方应用程序(在定制的Linux构建上运行)。我可以通过ssh客户端控制应用程序。为了执行命令,我需要运行rootsh(这是必需的,不能绕过)。所以我通常的工作流程如下:
现在,我正在尝试使某些过程自动化并在我的应用程序中包含一些命令。第三方应用程序没有api,因此这是我与之通信的唯一方法。 我可以通过python-paramiko连接而不会出现问题。但是我在sudo rootsh之后运行命令时,它不会在rootshell中执行命令,而是在我的“基本” shell中执行命令,而该shell无法控制应用程序。
double UnitAmt = double.Parse(TextboxunitAmt.Text);
string UnitQty = TextboxunitQty.Text.ToString();
int Qty = int.Parse(UnitQty);
double GrandTotal = Convert.ToDouble(UnitAmt) * Convert.ToDouble(Qty);
TextboxCostPrice.Text = GrandTotal.ToString();
两张照片都显示相同的结果。通过在腻子外壳中输入相同的命令,我得到了不同的结果,因为在“ sudo rootsh”之后,“ cd”将我重定向到根目录,但没有重定向到该目录。
根据我的理解和测试,rootshell是Shell中的另一个会话,因此我的程序不会将stdin和stdout重定向到rootshell。
是否有将我的输入和输出重新分配到rootshell的方法,或者其他可以通过pyton登录到rootshell的方法?