【问题标题】:Python to run Linux commandsPython 运行 Linux 命令
【发布时间】:2015-06-03 01:30:47
【问题描述】:

我想用 python 执行几个 linux 命令 这些是我的命令。

modprobe ipv6
ip tunnel add he-ipv6 mode sit remote 216.218.221.6 local 117.211.75.3 ttl 255
ip link set he-ipv6 up
ip addr add 2001:470:18:f3::2/64 dev he-ipv6
ip route add ::/0 dev he-ipv6
ip -f inet6 addr

216.218.221.6
117.211.75.3
2001:470:18:f3::2/64

这些 ip 是来自用户的输入。命令也需要 root 权限。 我的代码到现在为止。

import os

print("Enter Server Ipv4 Address")
serverip4=input()

print("Enter Local Ipv4 Address")
localip4=input()

print("Enter Client Ipv6 Address")
clientip4=input()

【问题讨论】:

  • 只是出于好奇,你为什么认为 Python 比 shell 脚本更适合这个?
  • 我正在学习 Python .. 所以,只是 .. 尝试一下 :)..
  • 您应该查看subprocess 模块。
  • 我在做。但我不知道如何添加用户输入。

标签: python linux command


【解决方案1】:

我想,在这种情况下,subprocess 将是最佳选择,因为您想获取所有命令结果并使用它。 你可以参考这个页面:https://docs.python.org/2/library/subprocess.html

代码如下:

import subprocess

#To use the sudo -> echo "password" | sudo <command>

ipv6_command_list = "echo 'password' | sudo 'ip tunnel add he-ipv6 mode sit remote 216.218.221.6 local 117.211.75.3 ttl 255'"
ip_link_list = "echo 'password' | sudo 'ip link set he-ipv6 up'"
ip_addr_list = "echo 'password' | sudo 'ip addr add 2001:470:18:f3::2/64 dev he-ipv6'"
ip_route_list = "echo 'password' |sudo 'ip route add ::/0 dev he-ipv6'"
ip_inet_list = "echo 'password' | sudo 'ip -f inet6 addr'"

for ip_command in [ip_link_list,ip_addr_list,ip_route_list,ip_inet_list]:
    proc = subprocess.check_output(ip_command, shell=True)

【讨论】:

    【解决方案2】:

    像这样:

    import sys
    import os
    os.system("ip tunnel add he-ipv6 mode sit remote %s local %s ttl 255" % (whicheveripvariableisfirst), (whicheveripvariableisnext)))
    

    如果您需要它在 sudo 级别运行,则将 sudo 放在命令部分或确保将 python 脚本作为 sudo 运行。

    【讨论】:

      猜你喜欢
      • 2016-01-03
      • 1970-01-01
      • 1970-01-01
      • 2021-09-18
      • 2015-12-19
      • 2018-05-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多