| Server IP : 43.141.50.122 / Your IP : 113.219.202.141 Web Server : Apache System : Linux VM-8-5-opencloudos 6.6.34-9.oc9.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Jun 19 19:35:45 CST 2024 x86_64 User : www ( 1000) PHP Version : 8.1.27 Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /bin/ |
Upload File : |
#!/usr/bin/sh
# -*- tcl -*-
# The next line is executed by /bin/sh, but not tcl \
exec tclsh "$0" ${1+"$@"}
package require Expect
# This script unhangs a printer which claims it is "waiting for lock".
# Written by Don Libes. Based on English instructions from Scott Paisley.
# lpunlock figures out if the printer is on a server, and if so which,
# by looking in the local printcap file. (You can override this by
# supplying a server name as an additional argument.) It then rlogins
# to the server, recreates the device and resets the queue via lpc.
# assumes user has root privs on remote host via /.rhosts
# assumes printer is name of device on remote system
proc usage {} {
send_user "usage: lpunlock <printer> \[<server>\]\n"
send_user "example: lpunlock lw-isg durer\n"
exit
}
if {$argc==0} usage
set printer [lindex $argv 0]
set client [exec hostname]
if {$argc == 1} {
# if no arg2, look in local printcap for info
spawn ed /etc/printcap
expect "\n" ;# discard character count
send "/$printer/\r"
for {} {1} {} {
expect -re ".*:rm=(\[^:]*):.*\r\n" {
set server $expect_out(1,string)
break
} "\r\n*\\\r\n" { ;# look at next line of entry
send "\r"
} "\r\n*\n" { ;# no more lines of entry - give up
set server $client
break
}
}
} else {
if {$argc == 2} {
set server [lindex $argv 1]
} else usage
}
set whoami [exec whoami]
if {[string match $server $client] && [string match $whoami "root"]} {
spawn csh
expect "# "
} else {
# login to the print server as root.
# Set timeout high because login is slow.
set timeout 60
spawn rlogin $server -l root
expect timeout exit \
eof exit \
"Password*" {
send_user "\ncouldn't login to $server as root\n"
exit
} "1#*"
set timeout 10
}
# run lpc and 'stop printer'
send lpc\r ; expect "lpc>*"
send stop $printer\r ; expect "unknown*" exit \
"disabled*lpc>*"
# exit lpc and cd /dev
send quit\r ; expect "#*"
send cd /dev\r ; expect "#*"
# figure out major/minor device numbers
send ls -l /dev/$printer\r ; expect timeout {
send_user "\nbad device - couldn't get major/minor numbers\n"; exit
} "crw*#*"
scan $expect_out(buffer) "ls -l %*s %*s 1 root %d, %d" major minor
# delete the lock and the printer device itself
send rm /var/spool/$printer/lock /dev/$printer\r ; expect #*
# recreate the printer device
send mknod $printer c $major $minor\r ; expect #*
# run lpc and 'start printer'
send lpc\r ; expect lpc>*
send start $printer\r ; expect started*lpc>*
send quit\r ; expect #*
# logout
send exit\r ; expect eof
send_user Printer unlocked and restarted.\n