Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >我希望将python的脚本输出发送到SSH shell

我希望将python的脚本输出发送到SSH shell
EN

Stack Overflow用户
提问于 2017-10-17 13:18:57
回答 2查看 680关注 0票数 0

大家好,我在树莓派-3做一辆车。我正在发送一些shh命令。我的问题是我不想直接发送shh命令,虽然我想发送python控制台输出的输出,但我该怎么做?

EN

回答 2

Stack Overflow用户

发布于 2017-10-17 13:35:06

您可以在python中使用OS库,这将允许python程序与unix shell集成。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#Import Library
import os

#Set the action to 0 as it's not needed right now
action = 0

#Loop infinitely
while True:
    #First of all, list the available actions and let the user choose one.
    print('Actions that can be performed')
    print('ID.  Action')
    print('')
    print('1.  Go Forward')
    print('2.  Go Backwards')
    print('3.  Stop')
    print('')
    print('0.  Stop and exit program')
    print('')

    #Ask the 'driver' what they want the car to do. Program will hang continuing
    #to perform any current action that was previously selected until a different
    #action is provided.
    action = int(input('Enter the numerical ID of the action and press return: '))

    #Do the action based on the numerical ID
    if(action == 1):
        os.system('shell-command-to-go-forward')

    if(action == 2):
        os.system('shell-command-to-go-backward')

    if(action == 3):
        os.system('shell-command-to-stop-everything')

    if(action == 0):
        os.system('shell-command-to-stop-everything')
        exit(0)

如果这不是你想要做的,请你说得更具体一些。python脚本是否应该接受任何形式的用户输入?

票数 0
EN

Stack Overflow用户

发布于 2017-10-17 15:00:33

我无法帮助您实现您所寻求的ssh功能,因为我从未尝试过该功能,现在也没有可用的工具可供尝试。然而,我不认为这是一个合适的工具。相反,我附加了一个带有tkinter GUI的套接字服务器示例,按下箭头键将事件发送到套接字服务器,然后可以对其执行操作。

server.py:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import socket

# Create a TCP/IP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# Bind the socket to the port
server_address = ('localhost', 10000)
print('starting up on %s port %s' % server_address)
sock.bind(server_address)

while True:
    try:
        # Listen for incoming connections
        sock.listen(1)

        while True:
            # Wait for a connection
            print('waiting for a connection')
            connection, client_address = sock.accept()

            try:
                print('connection from', client_address)

                # Receive the data in small chunks and retransmit it
                while True:
                    data = connection.recv(16)
                    if data:
                        print('received "%s"' % data)
                        # here you can test the character received and act accordingly
                        # you could also opt to send data back the other way
#                       print('sending data back to the client')
#                       connection.sendall(data)
                    else:
                        print('no more data from', client_address)
                        break
                    
            finally:
                # Clean up the connection
                connection.close()
    except:
        pass

client.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import socket
import tkinter as tk

class App(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)
        self.title("Car control")
        
        self.sock = None
        
        self.addr = tk.Entry(self)
        self.addr.insert(0, "127.0.0.1")
        self.addr.grid(column=1, row=1, sticky="nesw")
        
        self.button = tk.Button(self, text="Connect", command=self.connect)
        self.button.grid(column=2, row=1, sticky="nesw")
        
        self.bind("<KeyPress>", self.handle_binding)
        self.bind("<KeyRelease>", self.handle_binding)
        
    def connect(self):
        try:
            self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            self.sock.connect((self.addr.get(),10000))
            self.addr.configure(state="disabled")
            self.button.configure(text="Disconnect", command=self.disconnect)
            self.focus()
        except (ConnectionRefusedError, socket.gaierror):
            pass
        
    def disconnect(self):
        self.sock.close()
        self.sock = None
        self.addr.configure(state="normal")
        self.button.configure(text="Connect", command=self.connect)
        
    def send(self, data):
        if self.sock:
            self.sock.sendall(data.encode('utf8'))
            
    def handle_binding(self, event):
        if event.widget != self.addr: # ignore key events aimed at texkbox
            char = ""
            if event.keysym == "Up":
                char = "u"
            elif event.keysym == "Down":
                char = "d"
            elif event.keysym == "Left":
                char = "l"
            elif event.keysym == "Right":
                char = "r"
            if event.type == '2': # pressed
                self.send(char)
            elif event.type == '3': # released
                self.send(char.upper())

if __name__ == "__main__":
    app = App()
    app.mainloop()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46791194

复制
相关文章
Swift入门:闭包
到目前为止,您已经遇到了整数、字符串、双精度数、浮点数、布尔值、数组、字典、结构和类,但是还有另一种类型的数据在Swift中广泛使用,它被称为闭包。这些是复杂的,但它们是如此强大和富有表现力,它们在 Cocoa Touch 广泛使用,所以如果你不了解他们,你不会走得很远。
韦弦zhy
2020/03/19
5490
Swift学习:闭包
本篇将详细总结介绍Swift闭包的用法; 闭包是自包含的函数代码块,可以在代码中被传递和使用。Swift中的闭包与C和 Objective-C中的代码块(blocks)以及其他一些编程语言中的匿名函数比较相似。
梧雨北辰
2018/08/09
8610
Swift之闭包
Swift 是一门由Apple 公司开发的用于iOS和OSX设备上的开发语言,吸收了很多现代开发语言的优势。 今天看了官方的关于闭包部分的文档,感觉很不错,记录一下。
EltonZheng
2021/01/26
1.7K0
使用 Swift Package Manager 创建 Swift 包
image.png Using the Package Manager 官网 https://swift.org/getting-started/#using-the-package-manager 进入准备创建 Swift 包文件位置 image.png 创建新的Swift包,首先要创建并输入一个名为的目录 perfect-Qiniu: image.png 进入刚才创建的 perfect-Qiniu 文件
LeeCen
2018/10/11
1.4K0
使用 Swift Package Manager 创建 Swift 包
Swift教程(七)--闭包
闭包是可以在你的代码中被传递和引用的功能性独立模块。Swift 中的闭包和 C 以及 Objective-C 中的 blocks 很像,还有其他语言中的匿名函数也类似。
roc
2019/07/31
7710
Swift系列八 - 闭包
要想使用exec函数,则必须传入两个Int类型的参数和一个返回Int类型的函数,然后exec内部执行了传入的函数。
呆呆
2021/05/27
4300
Swift-闭包(一)
array.sort{(n1:Int,n2:Int) -> Bool in return n1<n2}
Wilbur-L
2021/03/18
4460
swift的闭包结构
函数的设计思路是将有一定功能的代码块包装在一起,通过函数名实现复用。闭包和函数有着类似的作用,然而闭包的设计大多数情况下并不是为了代码的复用,而是传递功能代码块和处理回调结构。 如下代码所示,使用了冒泡排序算法来进行排序操作。 func mySort(array:inout Array<Any>,sortClosure:(Int,Int)->Bool)->Array<Any> { for indexI in array.indices {
用户2554571
2018/07/19
5630
Swift中的闭包(Closures)
闭包是自包含的函数代码块,可以在代码中被传递和使用。 Swift 中的闭包与 C 和 Objective-C 中的代码块(blocks)以及其他一些编程语言中的 lambdas 函数比较相似。
EltonZheng
2021/01/22
2K0
苹果现已支持 Swift 包索引
作者 | Sergio De Simone 译者 | 马可薇 策划 | 丁晓昀 Dave Verwer 和 Sven A. Schmidt 于三年前(2019 年)创建了 Swift 包索引,目的为让 Swift 开发者能够轻松地搜索发现 Swift 包。目前该项目已正式获得苹果的赞助,使其成为 Swift 包相关事宜的官方网站。 顾名思义,Swift 包索引并不是完整的软件包仓库,而是专注于为软件包元数据编制索引,为开发者们在决定项目要使用的软件包时提供其完善的信息。 其所能回答的问题包括:某个
深度学习与Python
2023/04/21
4520
苹果现已支持 Swift 包索引
Swift 基于闭包的类型擦除
与许多其他语言相比,使Swift更加安全,更不易出错的原因之一是其先进的(并且在某种程度上是不容忍的)类型系统。这是一种语言功能,有时可能会给人留下深刻的印象,使您的工作效率提高很多,而有时却令人沮丧。
Swift社区
2021/11/26
1.2K0
【Swift4】(6) 闭包 | 闭包应用 | 闭包作为函数参数 | 捕获特性
前端修罗场
2023/10/07
1930
Swift 闭包支持隐式 self
在 closure 捕获列表中,如果显式捕获self,则在 closure 使用时,则允许隐式使用self。即在 closure 捕获列表中声明[self], 则 closure 内调用self.的地方都可以不用书写该self.。这个特性在SE-0269中提议。现在本篇提议想把这个特性支持扩展到weak self的捕获上,并允许隐式self和已解包的self一样使用。效果就是如果在 closure 内 self 已经解包,则 closure 内调用 self 的地方可以不用写 self。如下例的dismiss方法调用:
DerekYuYi
2022/11/09
1.4K0
Swift-day4---闭包(Closures)
闭包写在一对大括号中,用 "in"关键字分隔,"in"后的语句是闭包的主体."in"之前的参数和返回值类型是语句组中所使用的参数和返回值格式的一种指示,并不必在语句组中进行逻辑运算和返回.闭包的表达式的运算结果是一种函数类型,可以作为表达式,函数参数和函数返回值
CC老师
2023/03/23
6310
Swift-day4---闭包(Closures)
包资源管理器NPM
NPM全称Node Package Manager,他是node包管理和分发工具。其实我们可以把NPM理解为前端的Maven .
名字是乱打的
2021/12/22
9650
Swift 基于闭包的类型擦除
与许多其他语言相比,使Swift更加安全,更不易出错的原因之一是其先进的(并且在某种程度上是不容忍的)类型系统。这是一种语言功能,有时可能会给人留下深刻的印象,使您的工作效率提高很多,而有时却令人沮丧。
韦弦zhy
2021/06/11
1.1K0
Swift 基于闭包的类型擦除
Swift讲解专题八——闭包 原
        Swift中的闭包是有一定功能的代码块,这十分类似于Objective-C中的block语法。Swift中的闭包语法风格十分简洁,其作用和函数的作用相似。
珲少
2018/08/15
3860
Swift进阶六——函数和闭包
形式参数,指的是是在函数的定义中,系统并没有为其分配内存空间、但是在函数里面可以使用的参数。比如下面的a就是形式参数:
拉维
2021/01/21
1.2K0
Swift3.0 - 函数和闭包
需求: 创建一个接口,输入true 返回 两个数相加的函数,输入false 返回两个数相减的函数
酷走天涯
2018/09/14
1.1K0
Swift3.0 - 函数和闭包
paletteer包:拥有2100多个调色板!
ggplot2是目前主流的绘图R包,有着丰富的扩展包。今天来推荐一个极其强大的配色R包——paletteer包。据R包作者介绍,这个包收集了52个R包的2100种调色板,R用户可以通过paletteer[1]包来直接调用其他R包的调色板。下面来学习下怎么使用这个R包[2]。
庄闪闪
2021/06/25
8.2K0
paletteer包:拥有2100多个调色板!

相似问题

类型标命名

12

类型标重命名类型

12

为命名空间类型标赋值

12

类型标全局命名空间声明

13

webpack的类型标命名空间

19
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文