kyrsjo Skrevet 4. oktober 2007 Del Skrevet 4. oktober 2007 Hei! Jeg vil gjerne skrive et program som 1. tar i mot postscript-data på standard input (på samme måte som lpr) 2. lagrer dette som en temp-fil på disken 3. scp'er denne til ssh-serveren på UiO (ssh-key for å slippe passord...) 4. ssh'er inn på denne, printer fila med uio sin printkommando 5. ssh'er inn på nytt og sletter fila på hjemmeområdet mitt Poenget er å lage en "erstattning" for lpr jeg kan bruke til å printe på div. uio-printere, men jeg aner ikke hvordan jeg kan ta i mot en strøm av binære data fra standard input, og så lagre dette som en fil på harddisken. Noen som har noe eksempelkode? En annen ting: Hvordan kan jeg kjøre shell-kommandoer fra inne i et C++-program? Lenke til kommentar
Dj_Offset Skrevet 4. oktober 2007 Del Skrevet 4. oktober 2007 En annen ting: Hvordan kan jeg kjøre shell-kommandoer fra inne i et C++-program? 9633246[/snapback] Klart du kan (se på, manual siden til exec eller system). Et bedre spørsmål; Hvorfor vil du skrive noe slikt i C++? Et (shell) script er mye bedre egnet, spør du meg. Lenke til kommentar
kyrsjo Skrevet 4. oktober 2007 Forfatter Del Skrevet 4. oktober 2007 I prinsippet enig, men jeg aner ikke hvordan jeg skal kunne få et shelscript til å lese fra stdin. Programmet vil jo alt i alt være "cat med noko attåt"... Lenke til kommentar
Dj_Offset Skrevet 4. oktober 2007 Del Skrevet 4. oktober 2007 I prinsippet enig, men jeg aner ikke hvordan jeg skal kunne få et shelscript til å lese fra stdin. F.eks noe slikt: #!/bin/sh cat /dev/stdin > fil scp fil user@ifi... Lenke til kommentar
kyrsjo Skrevet 5. oktober 2007 Forfatter Del Skrevet 5. oktober 2007 Har laget et knippe med scripts: #!/bin/sh #BRUK: uioprint printernavn #Configuration TMPDIR=$HOME TMPFILE="uioprint.ps" LOCALTMP=$TMPDIR"/"$TMPFILE REMOTETMP=$TMPFILE SERVER="login.ifi.uio.no" USER="kyrrens" #You *need* passwordless ssh! #Not really really neccessary... if [ ! -d $TMPDIR ]; then mkdir $TMPDIR fi #Grab data cat /dev/stdin > $LOCALTMP #Transfer data scp -C $LOCALTMP $USER@$SERVER:$REMOTETMP #Print data ssh $USER@$SERVER ppr -P $1 #Cleanup rm $LOCALTMP ssh $USER@$SERVER rm $REMOTETMP og #!/bin/sh #CONFIG SERVER="login.ifi.uio.no" USER="kyrrens" #You *need* passwordless ssh! #BRUK: uioprintque printernavn ssh $USER@$SERVER ppq $1 Uansett: De funker fint om jeg f.eks. sier "uioprint fys2 < fil.ps" men å printe fra f.eks. adobe funker ikke like bra (adobe henger)... Noen som har en idé om hva som er gæli? Lenke til kommentar
Dj_Offset Skrevet 5. oktober 2007 Del Skrevet 5. oktober 2007 Uansett: De funker fint om jeg f.eks. sier"uioprint fys2 < fil.ps" men å printe fra f.eks. adobe funker ikke like bra (adobe henger)... Noen som har en idé om hva som er gæli? 9641115[/snapback] Fra min manualside om lpr (debian sid): lpr uses a spooling daemon to print the named files when facilities become available. If no names appear, the standard input is assumed. Mulig du Adobe starter lpr med filnavn som parameter, og scriptet forsøker å lese fra stdin. Lenke til kommentar
kyrsjo Skrevet 5. oktober 2007 Forfatter Del Skrevet 5. oktober 2007 Forbedret versjon, fjernet en bug (hadde glemt et argument til ppr, men den tok tydeligvis fra standard in til scriptet DEN OGSÅ?!?), og la til utskrift av fil: #!/bin/sh #BRUK: uioprint printernavn [filnavn] #Configuration TMPDIR=$HOME TMPFILE="uioprint.ps" LOCALTMP=$TMPDIR"/"$TMPFILE REMOTETMP=$TMPFILE #LOGFILE=$TMPDIR"/uioprint.log" SERVER="login.ifi.uio.no" USER="kyrrens" #You *need* passwordless ssh! #Not really really neccessary... #if [ ! -d $TMPDIR ]; then # mkdir $TMPDIR #fi #Grab data if [ $# -eq 0 ]; then #Spesify a printer, will you? echo 'You need to specify printer name!' exit 1 fi if [ $# -eq 1 ]; then cat /dev/stdin > $LOCALTMP #Read from STDIN #echo "STDIN" >> $LOGFILE fi if [ $# -eq 2 ]; then #Print a file cp $2 $LOCALTMP #echo "FILE" >> $LOGFILE fi #Transfer data scp -C $LOCALTMP $USER@$SERVER:$REMOTETMP #Print data ssh $USER@$SERVER ppr -P $1 $REMOTETMP #Cleanup rm $LOCALTMP ssh $USER@$SERVER rm $REMOTETMP Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå