Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #59964

RE: UnicodeDecodeError: 'ascii' codec can't decode byte 0xff in position 0: ordinal not in range(128)

Path csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!feeder.erje.net!eu.feeder.erje.net!easy.in-chemnitz.de!news2.arglkargh.de!news.n-ix.net!news.bawue.net!npeer.de.kpn-eurorings.net!npeer-ng0.de.kpn-eurorings.net!news.tele.dk!news.tele.dk!small.news.tele.dk!newsgate.cistron.nl!newsgate.news.xs4all.nl!post.news.xs4all.nl!not-for-mail
Return-Path <vietht2@viettel.com.vn>
X-Original-To python-list@python.org
Delivered-To python-list@mail.python.org
X-Spam-Status OK 0.007
X-Spam-Evidence '*H*': 0.99; '*S*': 0.00; 'subject:not': 0.03; 'else:': 0.03; 'skip:[ 20': 0.04; 'elif': 0.05; "subject:' ": 0.07; 'username,': 0.07; '22,': 0.09; '8bit%:30': 0.09; '8bit%:78': 0.09; 'dst': 0.09; 'host,': 0.09; 'line:': 0.09; 'lines.': 0.09; 'password)': 0.09; 'subject:position': 0.09; 'true)': 0.09; 'python': 0.11; 'def': 0.12; 'windows': 0.15; "'':": 0.16; '-1,': 0.16; '8bit%:32': 0.16; '>to': 0.16; 'codec': 0.16; 'eclipse': 0.16; 'event):': 0.16; 'inputs': 0.16; 'msg):': 0.16; "new',": 0.16; 'ordinal': 0.16; 'skip:[ 40': 0.16; 'src': 0.16; 'stderr': 0.16; 'str)': 0.16; 'str):': 0.16; 'subject: \n ': 0.16; 'tab': 0.16; 'timeout': 0.16; 'timeout)': 0.16; 'app': 0.19; "skip:' 30": 0.19; 'skip:p 40': 0.19; 'input': 0.22; 'select': 0.22; 'import': 0.22; 'python?': 0.22; 'error': 0.23; 'byte': 0.24; 'skip:c 70': 0.24; 'skip:{ 20': 0.24; 'sorry,': 0.24; 'options': 0.25; 'post': 0.26; 'function': 0.29; 'host': 0.29; 'skip:p 30': 0.29; "skip:' 10": 0.31; 'os,': 0.31; "skip:' 40": 0.31; 'username': 0.31; 'file': 0.32; 'class': 0.32; 'skip:c 30': 0.32; 'run': 0.32; 'text': 0.33; 'plain': 0.33; 'skip:t 40': 0.33; 'style': 0.33; 'skip:_ 10': 0.34; "can't": 0.35; 'connection': 0.35; 'skip:s 30': 0.35; 'but': 0.35; 'url:rec-html40': 0.35; 'version': 0.36; 'skip:s 60': 0.36; 'thanks': 0.36; 'url:org': 0.36; 'url:microsoft': 0.37; 'list': 0.37; 'skip:& 10': 0.38; '8bit%:86': 0.38; 'window': 0.38; 'url:office': 0.38; 'skip:[ 10': 0.38; 'to:addr:python-list': 0.38; 'url:schemas': 0.38; 'url:omml': 0.39; 'url:2004': 0.39; 'skip:& 20': 0.39; 'subject:can': 0.39; 'url:12': 0.39; 'to:addr:python.org': 0.39; 'skip:p 20': 0.39; 'skip:u 10': 0.60; '8bit%:47': 0.60; 'blank': 0.60; 'skip:\xc2 10': 0.60; 'skip:t 30': 0.61; 'from:charset:utf-8': 0.61; 'show': 0.63; 'management': 0.65; 'skip:\xe2 10': 0.65; 'bottom': 0.67; 'close': 0.67; '8bit%:31': 0.68; '8bit%:40': 0.68; '8bit%:50': 0.68; '8bit%:74': 0.68; 'panel': 0.68; 'skip:w 40': 0.68; 'skip:w 30': 0.69; '8bit%:96': 0.70; '8bit%:100': 0.72; '8bit%:94': 0.72; '8bit%:27': 0.74; 'export': 0.74; 'received:203': 0.74; '8bit%:46': 0.78; '8bit%:98': 0.78; '8bit%:16': 0.84; '8bit%:49': 0.84; '8bit%:61': 0.84; '8bit%:82': 0.84; 'comment.': 0.84; 'received:220.231': 0.84; '8bit%:33': 0.91; '8bit%:54': 0.91; '8bit%:56': 0.91; '8bit%:58': 0.91; '8bit%:70': 0.91; '8bit%:18': 0.93; '8bit%:55': 0.93; '8bit%:67': 0.93; '8bit%:42': 0.95
Date Tue, 19 Nov 2013 15:39:56 +0700
From Hoàng Tuấn Việt <vietht2@viettel.com.vn>
Subject RE: UnicodeDecodeError: 'ascii' codec can't decode byte 0xff in position 0: ordinal not in range(128)
Sender vietht2@viettel.com.vn
To python-list@python.org
MIME-version 1.0
X-Mailer Microsoft Outlook 14.0
Content-Type multipart/alternative; boundary="Boundary_(ID_oK5MBHtGHXoVbM6v7o3uQQ)"
Content-language en-us
Thread-index Ac7lAras9yK9o7aBTk+5gBbCJg/m7g==
X-Mailman-Approved-At Tue, 19 Nov 2013 09:43:04 +0100
X-BeenThere python-list@python.org
X-Mailman-Version 2.1.15
Precedence list
List-Id General discussion list for the Python programming language <python-list.python.org>
List-Unsubscribe <https://mail.python.org/mailman/options/python-list>, <mailto:python-list-request@python.org?subject=unsubscribe>
List-Archive <http://mail.python.org/pipermail/python-list/>
List-Post <mailto:python-list@python.org>
List-Help <mailto:python-list-request@python.org?subject=help>
List-Subscribe <https://mail.python.org/mailman/listinfo/python-list>, <mailto:python-list-request@python.org?subject=subscribe>
Newsgroups comp.lang.python
Message-ID <mailman.2893.1384850586.18130.python-list@python.org> (permalink)
Lines 2024
NNTP-Posting-Host 2001:888:2000:d::a6
X-Trace 1384850586 news.xs4all.nl 15998 [2001:888:2000:d::a6]:37676
X-Complaints-To abuse@xs4all.nl
Xref csiph.com comp.lang.python:59964

Show key headers only | View raw


[Multipart message — attachments visible in raw view] - view raw

Hi Terry,

Thanks for your comment.

 

>To better help us help you, what exact version of Python?

I use Python 2.7.5

 

>Please post plain text without html.

Sorry, I will do it.

 

>Please post programs single spaced with just occasional blank lines.

 

File my_program.py

 

import wx.aui

import paramiko

import telnetlib

from LinuxHostPage import *

from WindowsHostPage import *

from AIXHostPage import *

Publisher = pub.Publisher()

TIMEOUT = 3

 

class MainWindow(wx.Frame):

    def __init__(self, parent, title):

        

        self.os = ''

        self.connection = []

        

        wx.Frame.__init__(self, parent, title=title)

        self.SetBackgroundColour('LightGray')

        

        # A Statusbar in the bottom of the window

        self.CreateStatusBar() 

        self.SetStatusText("Please input credentials.")

        

        # Publisher

        Publisher().subscribe(self.change_statusbar, 'change_statusbar')

        

        # Input box

        self.input_panel = wx.Panel(self)

        self.host = wx.StaticText(self.input_panel, -1, 'Host')

        self.host_entry = wx.TextCtrl(self.input_panel)

        self.username = wx.StaticText(self.input_panel, -1, 'Username')

        self.username_entry = wx.TextCtrl(self.input_panel)

        self.password = wx.StaticText(self.input_panel, -1, 'Password')

        self.password_entry = wx.TextCtrl(self.input_panel, style = wx.TE_PASSWORD)

        self.connect_btn = wx.Button(self.input_panel, -1, 'Connect')

        ## List box

        self.os_text = wx.StaticText(self.input_panel, -1, 'OS')

        self.choice_list = wx.Choice(self.input_panel, choices=['Redhat', 'SuSE', 'Windows', 'Solaris', 'AIX'])

        self.choice_list.SetSelection(2)

        

        self.input_sizer = wx.BoxSizer(wx.HORIZONTAL)

        self.input_sizer.Add((7,0))

        self.input_sizer.Add(self.os_text, flag = wx.ALIGN_CENTER)

        self.input_sizer.Add((7,0))

        self.input_sizer.Add(self.choice_list, flag = wx.ALIGN_CENTER)

        self.input_sizer.Add((7,0))

        self.input_sizer.Add(self.host, flag = wx.ALIGN_CENTER)

        self.input_sizer.Add((7,0))

        self.input_sizer.Add(self.host_entry, flag = wx.ALIGN_CENTER)

        self.input_sizer.Add((7,0))

        self.input_sizer.Add(self.username, flag = wx.ALIGN_CENTER)

        self.input_sizer.Add((7,0))

        self.input_sizer.Add(self.username_entry, flag = wx.ALIGN_CENTER)

        self.input_sizer.Add((7,0))

        self.input_sizer.Add(self.password, flag = wx.ALIGN_CENTER)

        self.input_sizer.Add((7,0))

        self.input_sizer.Add(self.password_entry, flag = wx.ALIGN_CENTER)

        self.input_sizer.Add((7,0))

        self.input_sizer.Add(self.connect_btn, flag = wx.ALIGN_CENTER)

        

        self.input_panel.SetSizer(self.input_sizer)

                       

        # Function panel

        self.notebook = wx.aui.AuiNotebook(self)

        

        # Top Sizer

        self.sizer = wx.BoxSizer(wx.VERTICAL)

        self.sizer.Add((0,7))

        self.sizer.Add(self.input_panel, border = 10)

        self.sizer.Add((0,7))

        self.sizer.Add(self.notebook, 1, wx.EXPAND)

        self.sizer.Add((0,7))

        

        self.SetSizerAndFit(self.sizer)

        

        # Show Frame

        self.Show()

 

        # Events

        self.connect_btn.Bind(wx.EVT_BUTTON, self.on_connect)

        self.Bind(wx.EVT_CLOSE, self.on_close)

        

    def change_statusbar(self, msg):

        self.SetStatusText(msg.data)

        

    def ssh(self, host, username, password):

        connection = paramiko.SSHClient()

        connection.set_missing_host_key_policy(paramiko.AutoAddPolicy())

        connection.connect(host, 22, username, password)

        stdin, stdout, stderr = connection.exec_command('ls')

        stdin.write('expected_input\n')

        stdin.flush()

        return connection

    

    def telnet(self, host, os, username, password):

        connection = telnetlib.Telnet(host)

        connection.read_until('login: ')

        connection.write(username + '\r')

        connection.read_until('assword: ')

        connection.write(password + '\r')

        if os == 'windows':

            connection.read_until('>', timeout = TIMEOUT)

        elif os == 'aix':

            connection.read_until('#', timeout = TIMEOUT)

        return connection

    

    def get_os(self):

        os = self.choice_list.GetLabel()

        return os.lower()

    

    def on_connect(self, event):

        self.os = self.get_os()

        self.connect_btn.Disable()

        host = self.host_entry.GetValue()

        username = self.username_entry.GetValue()

        password = self.password_entry.GetValue()

        self.SetStatusText('Connecting... Please wait.')

        self.connect_btn.Disable()

            

        if self.os == 'redhat' or self.os == 'suse':

            self.connection = self.ssh(host, username, password)

            page = LinuxHostPage(self, self.connection, self.os, Publisher)

        elif self.os == 'windows':

            self.connection = self.telnet(host, self.os, username, password)

            page = WindowsHostPage(self, self.connection, self.os, Publisher)

        elif self.os == 'aix':

            self.connection = self.telnet(host, self.os, username, password)

            page = AIXHostPage(self, self.connection, self.os, Publisher)

            

        self.SetStatusText('Connected')

        self.connect_btn.Enable()

        # Connection tab

        self.notebook.AddPage(page, host, select = True)

                

    def close_connection(self):

        self.connection.close() 

        

    # Clean up and close

    def on_close(self, event):

        self.close_connection

        self.Destroy()

        

    def on_gen(self, event):

        # Validate inputs

        if self.src_input.GetLabel() == '' or self.protocol_input.GetLabel()=='':

            # Set status bar

            wx.MessageBox('Please input all required fields!', 'Info', wx.OK | wx.ICON_INFORMATION)

            return

        

        # Src IP

        src_ip = '-s ' + self.src_input.GetLabel()

 

        # Protocol

        proto = '-p ' + self.protocol_input.GetLabel().lower()

        

        # Src port

        src_port = self.src_port_input.GetLabel().lower().strip()

        if  src_port == '(optional)' or src_port == '':

            src_port = ''

        else:

            src_port = '--sport ' + src_port 

            

        # Dst port

        dst_port = self.dst_port_input.GetLabel().lower().strip()

        if  dst_port != '':

            dst_port = '--dport ' + dst_port 

            

        # Target

        target = self.target_input.GetLabel().strip()

        if target == '(optional)' or target == '':

            target = '-j ACCEPT'

        else:

            target = '-j ' + target.upper()

            

        # Rule

        if src_port == '':

            rule = '{:10s}{:30s}{:10s}{:20s}{:22s}{:20s}'.format('-A INPUT', src_ip, proto, dst_port, '-m state --state NEW', target)

        else:

            rule = '{:10s}{:30s}{:10s}{:20s}{:20s}{:22s}{:20s}'.format('-A INPUT', src_ip, proto, src_port, dst_port, '-m state --state NEW', target)

        

        self.rule.Clear()

        self.rule.WriteText(rule)

        self.rule.Enable()

        

        # Set status bar

        self.set_status_bar('Generated rule successfully.')

        

    def set_status_bar(self, str):

        Publisher().sendMessage(('change_statusbar'), str)

            

app = wx.App(False)

frame = MainWindow(None, "Firewall Management Tool")

frame.Maximize()

app.MainLoop()

 

 

I can run the program in Eclipse and telnet successfully to a Windows host.

 

But when I export to .exe file by py2exe:

 

python gen_exe.py py2exe

 

 

File gen_exe.py:

 

from distutils.core import setup

import py2exe

 

setup(

    options = {

            "py2exe":{

            "packages": ['wx.lib.pubsub'],

            "dll_excludes": ["MSVCP90.dll", "HID.DLL", "w9xpopen.exe"],

        }

    },

    console = [{'script': ‘my_program.py'}]

)

 

When I run my_program.exe, this error is displayed:

 

UnicodeDecodeError: 'ascii' codec can't decode byte 0xff in position 0: ordinal not in range(128)

 

at line:

 

       connection.write(username + '\r')

 

--

Viet

Back to comp.lang.python | Previous | Next | Find similar | Unroll thread


Thread

RE: UnicodeDecodeError: 'ascii' codec can't decode byte 0xff in position 0: ordinal not in range(128) Hoàng Tuấn Việt <vietht2@viettel.com.vn> - 2013-11-19 15:39 +0700

csiph-web