«« ( Date ) »» // «« ( Thread ) »» // titanium - 2002

Re: neinteraktivni plink

by Aleksandar Milosevic
ponedeljak, 02. decembar 2002 - 12:17.

Da to je moguce kada imas nalog na titanu i kada koristis :ext: pristup.
Postoji takvo uputstvo na Gvozdenovom sajtu. Nemam nalog na galebu, ali
sigurno da njemu mozes pristupiti sa SSH-om. Inicijalizuj jedan cvsroot u
svome homedir-u i probaj ga.

Pogledaj komentare na uputstvo 'ssh, cvs i pserver'.

Ja sam napisao skriptu koja automatizuje celi pristup. Doduse u python-u
je ali je jednostavna. Bilo bi dobro da neko nesto slicno napise u c-u i
da se kompajlira u npr. scvs.exe. I onda koristis scvs.exe umesto cvs.exe.
Podrazumeva se da na racunaru imas cvs.exe i plink.exe.


---cvs.py--
#!/usr/bin/python

import os
import sys

CVS = 'cvs.exe'
SSH = 'plink.exe'

##argumenti komandne linije 'cvs.py -d:pserver:ime@localhost:/titanium/p....
cvs_args = sys.argv

## zameni prvi clan liste sa 'cvs.exe'
cvs_args[0] = CVS

## spojis i dobio si liniju koji bi kucao posle starta plink-a
## 'cvs.exe -d:pserver:ime@localhost:/titanium/p....
cvs_cl = " ".join(cvs_args)

## ovo je ono sto stalno kucas i fiksno je
ssh_cl = "%s cvs@titan.etf.bg.ac.yu -L 2401:localhost:2410" %SSH

print '... start %s ...' %SSH
print ssh_cl

## startujes plink i preuzmes njegov stdin i zajedno stdout i stderr
c_in, c_out_err = os.popen4(ssh_cl)

##sacekusa za ":"
c = ''
while c != ':':
c = c_out_err.read(1)
sys.stdout.write(c)

c_out_err.read(1) # procitaj ' ' posle dvotacke

print
print '... password ...'
c_in.write('\n') # samo <enter> umesto passworda

#sacekaj da pocne plink nesto da ti vraca.
#To znaci da je primio password.
c_out_err.read(10)

#zavrsio si sa plink-om, ali on jos uvek radi sto ti i treba

#sada odradis posao sa cvs-om

print '... start %s ...' %CVS
print cvs_cl
os.system(cvs_cl)
print '... end %s ...' %CVS

#sada je cvs zavrsio svoje.

c_in.write('\n') # zatvori SSH

c_out_err.close()
c_in.close()

print '... end %s ...' %SSH

--- end cvs.py ---