@Qc @sddlZyejWnMek riZejdkrfdGHddlZejdejnnXddlZddlZddlZddlZddl Z ddl m Z m Z m Z mZddlmZddlmZmZmZmZmZejjeZyddlZddlZWne jeZeZnXdZeoxeej d d dfkrdd l!m"Z"dd l#Tdd l$m%Z%ddl&m'Z'm(Z(m)Z)ddl*Z*dZ+eeedZ,e,ej-_.n&dGeoej GHeedej de/fdYZ0de/fdYZ1de2fdYZ3de2fdYZ4e5dkrddlZdfdYZ6e6Z7dfdYZ8e4Z9e9j:e7e8e9j;Z<e<j=GHe<j>d GHe<j?d!e<j=GHe<j>d GHe9j@eAd"fd#YZBeBZCe*jDd$e9jEd%d&ejFeGeCjHd eCjIfZJeJjKeLeJjMejd'eJjNe9j@ndS((iNis:platform.system() exception detected, trying workaround...i(tPermissionDeniedErrortInvalidPasswordErrortOperationCancelledErrortUsers(tserver_version_str2tuple(tlog_infot log_errort log_warningt log_debugt log_debug3cCsZd}tjdkr'|jd}n|dkrD||d}n|jdd}|S(Nitwin32t:is\t/(tsystplatformtfindtreplace(tpathtidx((s..\modules\wb_admin_ssh.pytnormalize_windows_path_for_ftp5s ii(tMessage(t*(tChannel(t SSHExceptiontBadAuthenticationTypetChannelExceptionic Csd}|jsdS|jjz\|j}t}|jtt|j ||j ||j |j |j |j |dks|dkr|j |d|j |d|j |d|j |dn1|dkr|j |d|j |dnt |}|jj||tj|j|<}t|j|<|j||j|j |j Wd|jjX|j||dkrtjtn|} xtr|jd|js |j} | dkrtd} n| n|jrPntj| kr|jd}|j |jj!|||jkrs|j|=nt"dqqW|jj#|}|dk r|S|j} | dkrtd} n| dS( Nsforwarded-tcpips direct-tcpipiitx11g?sUnable to open SSH channel.sopen SSH channel timeout($tNonetactivetlocktacquiret _next_channelRtadd_bytetchrtMSG_CHANNEL_OPENt add_stringtadd_intt window_sizetmax_packet_sizeRt _channelstputt threadingtEventtchannel_eventstTruet channels_seent_set_transportt _set_windowtreleaset_send_user_messagettimetOPEN_CHANNEL_TIMEOUTtwaitt get_exceptionRtisSettclosetcleartdeletetIOErrortget( tselftkindt dest_addrtsrc_addrttimeouttchantchanidtmteventttste((s..\modules\wb_admin_ssh.pytwba_open_channelLsj           "             s3Warning! Can't use connect with timeout in paramikos7Cannot use connect with timeout in paramiko version %s tConnectionErrorcBseZRS((t__name__t __module__(((s..\modules\wb_admin_ssh.pyRHstSSHDownExceptioncBseZRS((RIRJ(((s..\modules\wb_admin_ssh.pyRKst WbAdminSFTPcBs5eZdZdZdZdZdZRS(cCs ||_dS(N(tsftp(R<RM((s..\modules\wb_admin_ssh.pyt__init__scCsd}|jryV|jj}|dkrO|jjd|jj}n|dkrdd}nWqtk r}|GHqXn|S(Nt.t(RRMtgetcwdtchdirR:(R<tretRF((s..\modules\wb_admin_ssh.pytpwds     c Cst|}ddf}|jrd}d}y(|jj|}|jj|}WnLtk r}|jtjkr|jddkrnd d f}nXt|dkrt|t|krg}g}xt dt|D]j}||} t j | j r%|j | jqt j| j rJ|j | jq|j | jqW|j|jt|t|f}qn|S( Ns ROs Failed to read directory contenti(((((s Failed to read directory content((RRMtlistdirt listdir_attrR:terrnotENOENTtstriptlentrangetstattS_ISDIRtst_modetappendtfilenametS_ISREGtsortttuple( R<RRStfnamestfattrsRFtdirstresttitattr((s..\modules\wb_admin_ssh.pytlss4   '*   cCsXt|}t}|jrTy|jj|t}WqTtk rP}t}qTXn|S(N(RtFalseRMRRR,R:(R<RRSRF((s..\modules\wb_admin_ssh.pytcds    cCs|jr|jjndS(N(RMR7(R<((s..\modules\wb_admin_ssh.pyR7s (RIRJRNRTRjRlR7(((s..\modules\wb_admin_ssh.pyRLs    t WbAdminSSHcBseZdZdddZdZdZdZdZdZ dZ d Z d Z d Z d Zejddd ddZdZdZRS(c Cst|dstt|ds*tttd|jjd|_|j}|j }d}|j }|dkr8|j }|j drt jj|}nd}yt|d}Wntk r} d}nXd} |dk r|j} |jn d}d}d} |dkr4|jd}n\| dk rd | kry|jd }Wqtk r} d}|jd}qXqny#|j|||j|||Wqtk r} |r|jd n |jd| qtjk r4} |jd }|j|||j|||qXnU|jd}y#|j|||j|ddWn tk r} |jdnXttd |jjdS( Ntget_password_fortreset_password_fors%s: starting connect it~tritssht ENCRYPTEDtsshkeys %s: Leave (thasattrtAssertionErrorR t _this_filet __class__RIRtclientt ssh_hostnamet ssh_usekeytssh_porttssh_keyt startswithtosRt expandusertopenR:treadR7RnRtconnectt ssh_usernameRRotparamikotPasswordRequiredException( R<tsettingstpassword_delegatethosttusekeyRTtportt key_filenametfRFtkeyconttacceptedtexc((s..\modules\wb_admin_ssh.pytwrapped_connectsb             #  &#icCs|dks|dkr!d}nts6tdn|r`|jdr`tjj|}ntj|_|r|jj n|jj tj ydtjj j jkr|jj d|dt|d|d |d dd |dd d tdt| nI|jj d|dt|d|d |d dd |d tdt|ttd|jj|fWntjk r}d|_tntjk r}|dk rtd|q|nHtjk r}td|n#tk r}td|nXdS(NiisOOne of the modules necessary for SSH base administration could not be imported.RpR@thostnameRtusernametpasswordtpkeyRi t look_for_keyst allow_agents%s: Connected via ssh to %s s!Could not unlock private keys. %ss'Could not establish SSH connection: %s.s'Could not establish SSH connection. %s.(RRt ExceptionR~RRRt SSHClientRytload_system_host_keystset_missing_host_key_policyt WarningPolicyRt func_codet co_varnamestintRktboolRRwRxRItsocketterrorRKRRHR(R<RRtuserRTRtkeyR((s..\modules\wb_admin_ssh.pyR6s8 0"0!    cCs |jdk S(N(RyR(R<((s..\modules\wb_admin_ssh.pyt is_connectedascCsQt|}|jj}y|j||jWn|jnXdS(N(RRyt open_sftptmkdirR7(R<RRM((s..\modules\wb_admin_ssh.pyRds   cCsE|jj}y|j||jWn|jnXdS(N(RyRtrmdirR7(R<RRM((s..\modules\wb_admin_ssh.pyRns  cCsE|jj}y|j||jWn|jnXdS(N(RyRtremoveR7(R<RRM((s..\modules\wb_admin_ssh.pyRxs  cCst|}t}|jdkr0tdn|jj}y!|j|t}|jWnHt k r}|j|j t j krqn|jnX|S(Ns:wb_admin_ssh: SSH client not connected. file_exists failed( RRkRyRRRR\R,R7R:RWRX(R<RRSRMRF((s..\modules\wb_admin_ssh.pyt file_existss"     cCs~t|}d}|jj}y|j|}|jWn9tk rc}d}|jnd}|jnX|S(N(RRRyRR\R7R:(R<RRSRMRF((s..\modules\wb_admin_ssh.pyR\s  cCst|}|dk r*|jd}nt}y3|jj}|j||t}|jWn<t k r}t t d|j j |t|fnX|S(Ns'"s&%s: Retreival of file "%s" failed: %s (RRRYRkRyRR;R,R7R:RRwRxRItstr(R<tsourcetdestRSRMRF((s..\modules\wb_admin_ssh.pyR;s  &cCst|}|jj}y|jdWnDtk rr}|j|jtjkritdn|nXy|j |d}WnNtk r}|j|jtjkrtd||fn|nX|j }|j|j|S(NROsYPermission denied opening SFTP session. Please ensure the ssh account is correctly setup.Rqs8Permission denied opening remote file %s for reading: %s( RRyRRRR:R7RWtEACCESRtfileR(R<RRMRRRS((s..\modules\wb_admin_ssh.pyt get_contentss(        cCst|}|jj}y-|j|d}|jtjtjBWnNtk r}|j |j t j krt d||fn|nX|j |}|j |j |S(Ntws8Permission denied opening remote file %s for writing: %s(RRyRRtchmodR\tS_IREADtS_IWRITER:R7RWRRtwrite(R<RtdataRMRRRS((s..\modules\wb_admin_ssh.pyt set_contentss     cCs|t}y3|jj}|j||t}|jWn<tk rw}ttd|j j |t |fnX|S(Ns2%s: Sending of file "%s" to the server failed: %s ( RkRyRR(R,R7RRRwRxRIR(R<RRRSRMRF((s..\modules\wb_admin_ssh.pyR(s&ic sttd|d}d}t} t|tkrG|jd}nt|tk rbd}n|jdk r<d} |jj } d} y| j } | ro| j t | j d|tjkr| jn| j|| jd| } | jd| }| jd| }|dk rSttd|jj|jf|| n|tjkr|dk rtjd ttd |jjy%| j|d | jt } Wqtjk r}t|}d |kod |ksqqXnfd}d}|dkr0||| }n || | jrU| j}qottd|jjnWntj k r}| r| j!r| j"d}ndGt|GHt#j$n[t%k r}| r| j!r| j"d}ndGt|GHt#j$n dGHnX| dk r<| j&q<n|dk rr|dk rr| rr|j'|dd }nttd|jjjd|jd|j(d|f||fS(Ns cmd = %s RPtutf8iiKtwbtrbs0%s.exec_cmd: Getting channel via passed cb (%s) is%s.exec_cmd: Sending password s tockettclosedcsxd}t}xe|rsy>|j}|dk rL|dkrL||7}nt}Wqtjk rot}qXqW|S(NRP(R,trecvRRkRR@(R<t ssh_sessiontouttlooptchunk(t read_size(s..\modules\wb_admin_ssh.pytreader%s   sA%s: Read from the peer is done, but status code is not available isSSHException in SSH:sException in SSH:sUnknown exception in sshs-%s.exec_cmd(cmd=%s, output=%s. Retcode = %s) ()R RwRRkttypetunicodetencodeRRyt get_transportt open_sessiont setblockingR,t settimeoutRtCURRENTtget_ptyt exec_commandtmakefiletmakefile_stderrRxRIR2tsleepRtflushRRtexit_status_readytrecv_exit_statusRRRt recv_readyRt tracebackt print_excRR7Rtdecode(R<tcmdtas_usert user_passwordtoutput_handlerRtget_channel_cbRRSt password_senttbufsizet transportRAtstdintstdouttstderrRFtesR((Rs..\modules\wb_admin_ssh.pytexec_cmds~                     >cCst|jj|_|jS(N(RLRyRRM(R<((s..\modules\wb_admin_ssh.pytgetftp\scCs#|jdk r|jjndS(N(RyRR7(R<((s..\modules\wb_admin_ssh.pyR7`sN(RIRJRRRRRRRRR\R;RRR(RRRRR7(((s..\modules\wb_admin_ssh.pyRms T+       k t__main__tSettingscBseZdZRS(cCsJi|_i|_d|jdd}nX|dk rWdG|GHndS(Ns tCPU(RYRRt ValueError(R<ttexttvalue((s..\modules\wb_admin_ssh.pytcpus   cCs[|jd}d}yt|}Wntk r>d}nX|dk rWdG|GHndS(Ns tMem(RYRRR(R<RR((s..\modules\wb_admin_ssh.pytmems   cCsd}d}d}x|jdry|jd}d}|dkrR|j}n}|dkrj|j}ne|dks|dkr|dk r||nd}d}n%|d kr||7}n d}d}Wqtjk r|d8}|dkr|jtd qqXqWdS( NRPi iitCtMs s s 0123456789. s%Can't read from remote Windows script( RRRRRRR@R7R(R<RRRttimeoutstch((s..\modules\wb_admin_ssh.pyRs4            (RIRJRNRRRR(((s..\modules\wb_admin_ssh.pyRs    ttargettargssbcmd /C cscript //NoLogo "C:\Program Files\MySQL\MySQL Server 5.1\mysql_system_status.vbs" /DoStdIni (ORtsystemR:terrRWR2RRR\Rt wb_commonRRRRtworkbench.utilsRtgrtRRRRR Rtbasenamet__file__RwRRRRRt __version__tparamiko.messageRtparamiko.commontparamiko.channelRtparamiko.ssh_exceptionRRRR)R3RGt Transportt open_channelRRHRKtobjectRLRmRIRRRtwbasshRRtftpRTRjRlR7tquitRREtThreadRRRkRRttt setDaemonR,tstarttjoin(((s..\modules\wb_admin_ssh.pyts        "(    $  9K         = 6