📄 deny-rsync
字号:
#!/bin/bash# Send an error message via the rsync-protocol to a non-daemon client rsync.## Usage: deny-rsync "message"protocol_version=29exit_code=4 # same as a daemon that refuses an option# e.g. byte_escape 29 => \035function byte_escape { echo -ne "\\0$(printf "%o" $1)"}msg="$1"if [ "${#msg}" -gt 254 ]; then # truncate a message that is too long for this naive script to handle msg="${msg:0:251}..."fimsglen=$(( ${#msg} + 1 )) # add 1 for the newline we append below# Send protocol version. All numbers are LSB-first 4-byte ints.echo -ne "$(byte_escape $protocol_version)\\000\\000\\000"# Send a zero checksum seed.echo -ne "\\000\\000\\000\\000"# The following is equivalent to rprintf(FERROR_XFER, "%s\n", $msg).# 1. Message header: ((MPLEX_BASE + FERROR_XFER) << 24) + $msglen.echo -ne "$(byte_escape $msglen)\\000\\000\\010"# 2. The actual data.echo -E "$msg"# Make sure the client gets our message, not a write failure.sleep 1exit $exit_code
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -